ovlach_frontend/src/lib.rs

41 lines
1.1 KiB
Rust
Raw Normal View History

2023-11-26 15:36:39 +00:00
2023-11-26 16:31:20 +00:00
use std::collections::HashMap;
use rocket::{*, fairing::AdHoc};
use rocket_dyn_templates::{Template, tera::Value};
use ::serde::Deserialize;
2023-11-26 15:36:39 +00:00
pub mod routes;
2023-11-26 16:31:20 +00:00
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct PresentationConfig {
static_route: String,
}
pub fn static_filter(
value: &Value,
args: &HashMap<String, rocket_dyn_templates::tera::Value>
) -> Result<Value, rocket_dyn_templates::tera::Error> {
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<Build> {
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::<PresentationConfig>()
2023-11-26 15:36:39 +00:00
).mount("/", routes![
routes::root::index
])
}