diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 8e92b51..04ab18e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,20 +1,31 @@ +#[macro_use] +extern crate tracing; + use color_eyre::eyre::Result; -use std::net::IpAddr; +use std::{net::IpAddr, sync::Arc}; use warp::Filter; use std::str::FromStr; pub mod blog; +mod internal; + +use internal::SiteState; #[tokio::main] async fn main() -> Result<()> { color_eyre::install()?; + tracing_subscriber::fmt::init(); + info!("Starting launch of {}", env!("GIT_SHA")); + // Load .env kankyo::init(); + let state = Arc::new(internal::init().await?); + let blog_base = warp::path!("blog" / ..); - let blog_list = blog_base.and_then(blog::handlers::list); + let blog_list = blog_base.and(give_site_state(state.clone())).and_then(blog::handlers::list); let blog_post = blog_base.and( warp::path!(String) .and(warp::get()).and_then(blog::handlers::post)); @@ -36,3 +47,7 @@ async fn main() -> Result<()> { Ok(()) } + +fn give_site_state(sitestate: Arc<SiteState>) -> impl Filter<Extract = (Arc<SiteState>,), Error=std::convert::Infallible> + Clone { + warp::any().map(move || sitestate.clone()) +} |