From 5f2a48905634e7874946425057dc904dcb6c7d16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cel=20=F0=9F=8C=B8?= Date: Wed, 21 Jun 2023 23:46:20 +0100 Subject: [PATCH] implement blog --- articles/{rot => }/rot.md | 0 src/error.rs | 1 + src/main.rs | 32 ++++++++++++- src/posts/mod.rs | 73 +++++++++++++++++++++++++----- static/style.css | 63 ++++++++++++++++++++++++++ templates/base.html.tera | 4 +- templates/blog.html.tera | 22 +++++++++ templates/blogpost-panel.html.tera | 8 ++++ templates/blogpost.html.tera | 7 +++ templates/filtertags.html.tera | 7 +++ 10 files changed, 202 insertions(+), 15 deletions(-) rename articles/{rot => }/rot.md (100%) create mode 100644 templates/blog.html.tera create mode 100644 templates/blogpost-panel.html.tera create mode 100644 templates/blogpost.html.tera create mode 100644 templates/filtertags.html.tera diff --git a/articles/rot/rot.md b/articles/rot.md similarity index 100% rename from articles/rot/rot.md rename to articles/rot.md diff --git a/src/error.rs b/src/error.rs index 81cadd1..eb6f6e6 100644 --- a/src/error.rs +++ b/src/error.rs @@ -8,6 +8,7 @@ pub enum BlossomError { Chrono(Status, #[response(ignore)] chrono::ParseError), Io(Status, #[response(ignore)] std::io::Error), Deserialization(Status, #[response(ignore)] toml::de::Error), + NotFound(Status), NoMetadata(Status), Unimplemented(Status), } diff --git a/src/main.rs b/src/main.rs index dd2bd34..c08c2e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -47,6 +47,36 @@ async fn home(clients: &State) -> Template { ) } +#[get("/blog")] +async fn blog() -> Template { + let mut blogposts = posts::get_blogposts().await.unwrap_or_default(); + let tags = posts::get_tags(&blogposts); + for blogpost in &mut blogposts { + blogpost.render().await; + } + let reverse = "reverse".to_owned(); + Template::render( + "blog", + context! { + reverse, + blogposts, + tags, + }, + ) +} + +#[get("/blog/")] +async fn blogpost(blogpost: &str) -> Result