pub mod post; pub mod handlers { use std::sync::Arc; use color_eyre::eyre::eyre; use warp::{Reply, Rejection}; use warp::http::Response; use crate::templates::{self, Html, RenderRucte}; 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())) } 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"), } } }