pub mod post; pub mod handlers { use color_eyre::eyre::eyre; use std::sync::Arc; use crate::templates::{self, Html, RenderRucte}; use warp::http::Response; use warp::{Rejection, Reply}; use crate::internal::SiteState; use super::post::Post; pub async fn list(state: Arc) -> Result { let state = state.clone(); Response::builder().html(|o| templates::bloglist_html(o, state.blog.clone(), "Posts".into())) } pub async fn post(name: String, state: Arc) -> Result { let mut want: Option = None; for post in &state.blog { if post.link == format!("blog/{}", name) { want = Some(post.clone()); break; } } match want { Some(post) => { let body = Html(post.body_html.clone()); Response::builder().html(|o| templates::post_html(o, post, body)) } None => panic!("No post found"), } } }