This commit is contained in:
2023-12-03 15:46:05 +01:00
parent a5e0857285
commit 2b133a9f3f
13 changed files with 779 additions and 152 deletions

View File

@@ -1,35 +1,45 @@
use std::{thread::sleep, time::Duration};
use log::error;
use ovlach_data::cv::cv::CV;
use rocket::{get, State, response::Redirect, http::Status};
use nanobyte_opentelemetry::rocket::{OtelReqwestClient, TracingSpan};
use nanobyte_tera::l18n::LanguageDescription;
use ovlach_data::cv::data::CV;
use rocket::{get, State, response::Redirect, http::Status, futures::executor::enter};
use rocket_dyn_templates::Template;
use serde::Serialize;
use crate::{PresentationConfig, services::cv::fetch_cv_data_from_backend, CVBackendConfig, tools::rocket::RequestLanguage};
use crate::{PresentationConfig, services::cv::fetch_cv_data_from_backend, CVBackendConfig, tools::rocket::RequestLanguage, DefaultPerson};
#[derive(Serialize, Debug)]
struct RootPage {
static_host: String,
cv: CV,
download_cv_url: String,
lang: String,
lang: LanguageDescription,
}
#[get("/<language>")]
pub async fn index(presentation_config: &State<PresentationConfig>, cv_config: &State<CVBackendConfig>, language: RequestLanguage) -> Result<Template, Status> {
let context = match fetch_cv_data_from_backend(cv_config.cv_backend_path.clone()).await {
pub async fn index(presentation_config: &State<PresentationConfig>, cv_config: &State<CVBackendConfig>, language: RequestLanguage, client: OtelReqwestClient,
default_person: &State<DefaultPerson>, span: TracingSpan) -> Result<Template, Status> {
let span = span.0.enter();
let context = match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &default_person.default_person_name, &client.0).await {
Ok(cv) => RootPage {
static_host: presentation_config.static_route.clone(),
cv,
download_cv_url: "FIXME!".to_string(),
lang: language.language,
lang: LanguageDescription::new(&language.language.as_str(), "ovlach_frontend"),
},
Err(e) => {
error!("Can't fetch CV data from backend {:?}", e);
drop(span);
return Err(Status::InternalServerError)
}
};
Ok(Template::render("default", &context))
let result = Ok(Template::render("default", &context));
drop(span);
result
}