use crate::config::*;
use crate::constants::REPO_GMI;
use crate::network::net::Net;
use crate::network::{self, ForgeApi};
use windmark::response::Response;
pub async fn handler(cfg: &Config, net: &Net) -> Result<Response, network::error::Error> {
let repos = &cfg.forge_api().get_recent_repos(net).await?;
let repo_links: Vec<String> = repos.iter().map(super::templates::repo_link).collect();
let gemtext_list: String = repo_links
.iter()
.map(|n: &String| format!("{n}\n"))
.collect::<Vec<String>>()
.concat();
let gemtext = format!(
"A Gemtext proxy for {}.
This capsule lets readers view code repositories from the comfort of a Gemini-protocol client.
=> {REPO_GMI} Proxy source code
=> {} Visit {}
## Recent Activity\n{gemtext_list}",
cfg.forge_url.host_str().expect("Proxy source has host"),
cfg.forge_url,
cfg.forge_kind
);
Ok(Response::success(gemtext))
}