use std::path::PathBuf; use askama::Template; use axum::{response::IntoResponse, Extension}; use crate::{ configuration::{AppConfig, ReadmeConfig}, into_response, methods::filters, methods::repo::Result, }; #[derive(Template)] #[template(path = "about.html")] pub struct View { about: String, config: AppConfig, } pub async fn handle(Extension(config): Extension) -> Result { let about = comrak::markdown_to_html( &get_readme_file(PathBuf::from(&config.root_readme)) .await .unwrap_or_else(|_| "`Error opening root_readme file.`".to_string()), &ReadmeConfig::gfm(), ); Ok(into_response(View { about, config })) } async fn get_readme_file(path: PathBuf) -> Result { let mut file = tokio::fs::File::open(path).await?; let mut contents = String::new(); tokio::io::AsyncReadExt::read_to_string(&mut file, &mut contents).await?; Ok(contents) }