ovlach_frontend/src/lib.rs

52 lines
1.6 KiB
Rust
Raw Normal View History

2023-11-26 15:36:39 +00:00
2023-11-26 16:31:20 +00:00
use rocket::{*, fairing::AdHoc};
2023-11-27 00:19:10 +00:00
use rocket_dyn_templates::Template;
2023-11-26 16:31:20 +00:00
use ::serde::Deserialize;
2023-11-27 08:30:21 +00:00
use tools::tera::{static_filter, translate_filter, calculate_age, insert_space_every, lang_entity, gravatar_link, format_date};
2023-11-26 15:36:39 +00:00
pub mod routes;
2023-11-26 17:40:12 +00:00
pub mod services;
pub mod tools;
2023-11-26 15:36:39 +00:00
2023-11-26 16:31:20 +00:00
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct PresentationConfig {
static_route: String,
}
2023-11-26 17:40:12 +00:00
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct CVBackendConfig {
cv_backend_path: String,
2023-11-26 16:31:20 +00:00
}
2023-11-26 22:53:31 +00:00
2023-11-26 16:31:20 +00:00
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");
2023-11-26 22:53:31 +00:00
2023-11-26 16:31:20 +00:00
rocket.attach(
Template::try_custom(|engines| {
engines.tera.register_filter("static", static_filter);
2023-11-26 17:45:50 +00:00
engines.tera.register_filter("translate", translate_filter);
2023-11-26 19:32:45 +00:00
engines.tera.register_filter("calculate_age", calculate_age);
engines.tera.register_filter("insert_space_every", insert_space_every);
2023-11-26 21:20:55 +00:00
engines.tera.register_filter("gravatar_link", gravatar_link);
2023-11-26 20:16:35 +00:00
// filters specific to API
engines.tera.register_filter("lang_entity", lang_entity);
2023-11-27 08:30:21 +00:00
engines.tera.register_filter("format_date", format_date);
2023-11-26 16:31:20 +00:00
Ok(())
})
).attach(
AdHoc::config::<PresentationConfig>()
2023-11-26 17:40:12 +00:00
).attach(
AdHoc::config::<CVBackendConfig>()
2023-11-27 00:19:10 +00:00
).attach(
tools::rocket::RequestTimer
2023-11-26 15:36:39 +00:00
).mount("/", routes![
2023-11-27 00:19:10 +00:00
routes::root::index,
routes::root::index_without_lang
2023-11-26 15:36:39 +00:00
])
}