From 5af90d846cbf02a5820592cfe7117cffd295e96a Mon Sep 17 00:00:00 2001 From: Ondrej Vlach Date: Sat, 9 Dec 2023 17:14:31 +0100 Subject: [PATCH] fix: link to pdf --- src/routes/root.rs | 2 +- src/tools/rocket.rs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/routes/root.rs b/src/routes/root.rs index 587202b..5c07ead 100644 --- a/src/routes/root.rs +++ b/src/routes/root.rs @@ -28,7 +28,7 @@ default_person: &State, frontend_svc: &State, cv, lang: LanguageDescription::new(language.language.as_str(), "ovlach_frontend"), contact_svc: frontend_svc.inner().contact_service.clone(), - pdf_download_url: format!("{}/cv/{}/output.pdf", frontend_svc.inner().pdf_service.clone(), default_person.default_person_name) + pdf_download_url: format!("{}/cv/{}/{}/output.pdf", frontend_svc.inner().pdf_service.clone(), default_person.default_person_name, language.language) // route: /cv///output.pdf }, Err(e) => { error!("Can't fetch CV data from backend {:?}", e); diff --git a/src/tools/rocket.rs b/src/tools/rocket.rs index aa060cd..2e96aee 100644 --- a/src/tools/rocket.rs +++ b/src/tools/rocket.rs @@ -4,6 +4,13 @@ use phf::phf_map; pub struct RequestLanguage { pub language: String, + pub simple_language: String, +} + + +fn find_key_for_value<'a>(map: &'a phf::Map<&'a str, &'a str>, value: &str) -> Option<&'a str> { + map.into_iter() + .find_map(|(key, &val)| if val == value { Some(*key) } else { None }) } static LANG_TO_CODES: phf::Map<&'static str, &'static str> = phf_map! { @@ -18,9 +25,11 @@ impl<'r> FromParam<'r> for RequestLanguage { match LANG_TO_CODES.get(param) { Some(val) => Ok(RequestLanguage { language: val.to_string(), + simple_language: find_key_for_value(&LANG_TO_CODES, val).unwrap_or("un").to_string(), }), None => Ok(RequestLanguage { language: LANG_TO_CODES["en"].to_string(), + simple_language: "en".to_string(), }), } }