use std::collections::HashMap; use rocket::{*, fairing::AdHoc}; use rocket_dyn_templates::{Template, tera::Value}; use ::serde::Deserialize; pub mod routes; #[derive(Deserialize)] #[serde(crate = "rocket::serde")] pub struct PresentationConfig { static_route: String, } pub fn static_filter( value: &Value, args: &HashMap ) -> Result { let host = args.get("static_host"); return Ok(rocket_dyn_templates::tera::Value::String(format!("{}/{}", host.unwrap().as_str().unwrap(), value.as_str().unwrap()))); // TODO: fix-me here! } pub fn rocket_builder() -> Rocket { let rocket = rocket::build(); //let figment = rocket.figment(); // extract the entire config any `Deserialize` value //let config: PresentationConfig = figment.extract().expect("config"); rocket.attach( Template::try_custom(|engines| { engines.tera.register_filter("static", static_filter); Ok(()) }) ).attach( AdHoc::config::() ).mount("/", routes![ routes::root::index ]) }