git-gemini-forge 0.5.2

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 users.
pub fn handler(cfg: &Config) -> Result<Response, network::error::Error> {
	if !cfg.forge_list_users {
		// Pretend this route doesn't exist if enumerating users is disabled.
		return Err(network::error::Error::ResourceNotFound);
	}

	// List users
	let users = &cfg.forge_api().get_users()?;

	// 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}");
	Ok(Response::success(gemtext))
}