git-gemini-forge 0.4.0

A simple Gemini server that serves a read-only view of public repositories from a Git forge.
use crate::config::*;
use crate::network;
use windmark::response::Response;

/// Answers with Gemtext that consists of a list of a user's repositories.
pub fn handler(cfg: &Config, username: &str) -> Result<Response, network::error::Error> {
	// List repos
	let repos = &cfg.forge_api().get_user_repos(username)?;

	// Transform repos into Gemtext internal page links
	let repo_links: Vec<String> = repos.iter()
		.map(super::templates::repo_link)
		.collect();

	// Format repos into a Gemtext list
	let gemtext_list: String = repo_links.iter()
		.map(|n: &String| format!("{n}\n"))
		.collect::<Vec<String>>()
		.concat();

	let gemtext: String = format!("Found {} repos for {username}:\n{gemtext_list}", repos.len());
	return Ok(Response::success(gemtext));
}