git-gemini-forge 0.3.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 crate::network::*;
use windmark::response::Response;

/// Answers with Gemtext that consists of a list of users.
pub fn handler(cfg: &Config) -> Result<Response, network::error::Error> {
	// List users
	let users: Vec<forgejo::User> = forgejo::get_users(&cfg.forge_api)?;

	// Transform users into Gemtext internal page links
	let user_names: Vec<String> = users.iter()
		.map(super::templates::user_link)
		.collect();

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

	let gemtext = format!("## Users\n{gemtext_list}");
	return Ok(Response::success(gemtext));
}