gitscope
← rgit / 0.1.0 / src/methods/repo/about.rs
https://dev.kronoz.win/r/rgit.git
src/methods/repo/about.rs · Rust
Blame Raw
 1use std::sync::Arc;
 2
 3use askama::Template;
 4use axum::{response::Response, Extension};
 5
 6use crate::{
 7    git::ReadmeFormat,
 8    into_response,
 9    methods::repo::{Repository, RepositoryPath, Result},
10    Git,
11};
12
13#[derive(Template)]
14#[template(path = "repo/about.html")]
15pub struct View {
16    repo: Repository,
17    readme: Option<(ReadmeFormat, Arc<str>)>,
18}
19
20pub async fn handle(
21    Extension(repo): Extension<Repository>,
22    Extension(RepositoryPath(repository_path)): Extension<RepositoryPath>,
23    Extension(git): Extension<Arc<Git>>,
24) -> Result<Response> {
25    let open_repo = git.clone().repo(repository_path).await?;
26    let readme = open_repo.readme().await?;
27
28    Ok(into_response(&View { repo, readme }))
29}