diff options
Diffstat (limited to 'src/pages')
-rw-r--r-- | src/pages/mod.rs | 4 | ||||
-rw-r--r-- | src/pages/repo/about.rs | 44 | ||||
-rw-r--r-- | src/pages/repo/details.rs | 37 | ||||
-rw-r--r-- | src/pages/repo/mod.rs | 14 |
4 files changed, 75 insertions, 24 deletions
diff --git a/src/pages/mod.rs b/src/pages/mod.rs index d53561b..f838eee 100644 --- a/src/pages/mod.rs +++ b/src/pages/mod.rs @@ -4,4 +4,6 @@ //! which is exported from the module and then called by the router pub mod repo; -pub mod p404; + +mod p404; +pub use p404::render as p404; diff --git a/src/pages/repo/about.rs b/src/pages/repo/about.rs index 8797edd..fa88eb1 100644 --- a/src/pages/repo/about.rs +++ b/src/pages/repo/about.rs @@ -1,35 +1,35 @@ +use super::RepoWrapper; +use crate::types::RepoData; use actix_web::{web, HttpRequest, HttpResponse, Result}; use askama::Template; #[derive(Template)] -#[template(path = "repo.html")] -struct Repo<'a> { - project_owner: &'a str, - project_summary: &'a str, - project_name: &'a str, - project_logo: &'a str, - project_logo_alt_text: &'a str, - first_commit: &'a str, - num_commits: usize, - num_contributors: usize, +#[template(path = "repo/about.html")] +struct AboutRepo { + repo: RepoWrapper, + readme: String, } /// Renders the "repository/about" subpage pub async fn render(req: HttpRequest, path: web::Path<String>) -> Result<HttpResponse> { - println!("Rendering path: {:#?}", path); - dbg!(req); - - let repo = Repo { - project_owner: "spacekookie", - project_summary: "A lightweight web frontend for git repositories", - project_name: "webgit", - project_logo: "rust.png", - project_logo_alt_text: "Rust logo", - first_commit: "f6ca929", - num_commits: 123, - num_contributors: 3, + let repo = AboutRepo { + readme: include_str!("../../../README").to_string(), + repo: RepoWrapper { + data: RepoData { + owner: "spacekookie".into(), + name: "octopus".into(), + tagline: "A lightweight web frontend for git repositories".into(), + num_commit: 141, + num_branch: 1, + num_tag: 0, + num_contributor: 3, + size: "13.12M".into(), + }, + logo: "fakeavi.png".into(), + }, } .render() .unwrap(); + Ok(HttpResponse::Ok().content_type("text/html").body(repo)) } diff --git a/src/pages/repo/details.rs b/src/pages/repo/details.rs new file mode 100644 index 0000000..4745e96 --- /dev/null +++ b/src/pages/repo/details.rs @@ -0,0 +1,37 @@ +use super::RepoWrapper; +use crate::types::{BranchData, CommitData, RepoData}; +use actix_web::{web, HttpRequest, HttpResponse, Result}; +use askama::Template; + +#[derive(Template)] +#[template(path = "repo/details.html")] +struct AboutRepo { + repo: RepoWrapper, + branches: Vec<BranchData>, + commits: Vec<CommitData>, +} + +/// Renders the "repository/about" subpage +pub async fn render(req: HttpRequest, path: web::Path<String>) -> Result<HttpResponse> { + let repo = AboutRepo { + branches: vec![], + commits: vec![], + repo: RepoWrapper { + data: RepoData { + owner: "spacekookie".into(), + name: "octopus".into(), + tagline: "A lightweight web frontend for git repositories".into(), + num_commit: 141, + num_branch: 1, + num_tag: 0, + num_contributor: 3, + size: "13.12M".into(), + }, + logo: "fakeavi.png".into(), + }, + } + .render() + .unwrap(); + + Ok(HttpResponse::Ok().content_type("text/html").body(repo)) +} diff --git a/src/pages/repo/mod.rs b/src/pages/repo/mod.rs index c339350..7d90c97 100644 --- a/src/pages/repo/mod.rs +++ b/src/pages/repo/mod.rs @@ -1,3 +1,15 @@ //! The repository page subtree -pub mod about; +mod about; +mod details; + +pub use about::render as about; +pub use details::render as details; + +use crate::types::RepoData; + +/// A template wrapper for repository data +pub(self) struct RepoWrapper { + pub(self) data: RepoData, + pub(self) logo: String, +} |