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 17:45:50 +00:00
|
|
|
use tools::tera::{static_filter, translate_filter};
|
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
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
2023-11-26 17:45:50 +00:00
|
|
|
engines.tera.register_filter("translate", translate_filter);
|
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-26 15:36:39 +00:00
|
|
|
).mount("/", routes![
|
|
|
|
routes::root::index
|
|
|
|
])
|
|
|
|
}
|