use crate::blog::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 crate::blog::post::Post; pub async fn list(state: Arc) -> Result { let state = state.clone(); Response::builder().html(|o| templates::bloglist_html(o, state.projects.clone(), "Projects".into())) } pub async fn project(name: String, state: Arc) -> Result { let mut want: Option = None; for post in &state.projects { if post.link == format!("projects/{}", 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"), } } }