diff --git a/resources/cs-CZ/ovlach_pdf b/resources/cs-CZ/ovlach_pdf index f1229c6..6ccaacc 100644 --- a/resources/cs-CZ/ovlach_pdf +++ b/resources/cs-CZ/ovlach_pdf @@ -25,3 +25,5 @@ Intermediate = pokročilá znalost Beginer = malá znalost tools = nástroje operating-systems = operační systémy +skills-frameworks = Frameworky +skills-databases = Databáze diff --git a/resources/en-US/ovlach_pdf b/resources/en-US/ovlach_pdf index 6836786..0ca2bb2 100644 --- a/resources/en-US/ovlach_pdf +++ b/resources/en-US/ovlach_pdf @@ -25,3 +25,5 @@ Intermediate = intermediate Beginer = beginer tools = tools operating-systems = operating systems +skills-frameworks = Frameworks +skills-databases = Databases diff --git a/src/chromium/rocket.rs b/src/chromium/rocket.rs index a451b08..c47921e 100644 --- a/src/chromium/rocket.rs +++ b/src/chromium/rocket.rs @@ -41,7 +41,7 @@ pub struct ChromiumCoordinator { impl ChromiumCoordinator { const NUMBER_OF_INSTANCES: usize = 1; // TODO: make this configurable - + pub async fn new() -> Self { let instances: Arc>> = Arc::new(Mutex::new(Vec::with_capacity(Self::NUMBER_OF_INSTANCES))); trace!("creating {} Chromium instances", Self::NUMBER_OF_INSTANCES); @@ -63,7 +63,7 @@ impl ChromiumCoordinator { } fn spawn_browser(&self) { - let instances = self.instances.clone(); + let instances = self.instances.clone(); tokio::spawn(async move { debug!("spawn new instance of browser"); // Create new instance @@ -133,7 +133,7 @@ impl<'r> FromRequest<'r> for BrowserHolder { let coordinator = request.rocket().state::().unwrap(); let get_instance = coordinator.get_browser(); pin_mut!(get_instance); // TODO: wth? - let result = match tokio::time::timeout(std::time::Duration::from_secs(10), &mut get_instance).await { + match tokio::time::timeout(std::time::Duration::from_secs(10), &mut get_instance).await { Ok(maybebrowser) => match maybebrowser { Ok(browser) => Outcome::::Success(browser), Err(_) => { @@ -145,9 +145,6 @@ impl<'r> FromRequest<'r> for BrowserHolder { error!("Can't create new instance of browser (timeout)"); Outcome::::Error((Status::InternalServerError, ())) } - }; - - result + } } } - diff --git a/src/lib.rs b/src/lib.rs index 2f0f46e..033b2f5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,8 +18,9 @@ pub struct CVBackendConfig { #[derive(Deserialize)] #[serde(crate = "rocket::serde")] +#[allow(dead_code)] pub struct DefaultPerson { - default_person_name: String, + pub(crate) default_person_name: String, } pub fn rocket_builder() -> Rocket { diff --git a/src/main.rs b/src/main.rs index 4768c7c..6516635 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,5 @@ -use std::{panic, fs::File, io::Write}; - -use log::error; use nanobyte_opentelemetry::{default_filter_layer, LogLevel, install_panic_handler}; use ovlach_pdf::rocket_builder; -use tracing::Level; #[rocket::main] diff --git a/src/routes/pdf.rs b/src/routes/pdf.rs index f58e52b..3e905c3 100644 --- a/src/routes/pdf.rs +++ b/src/routes/pdf.rs @@ -1,16 +1,14 @@ use headless_chrome::Browser; use headless_chrome::types::PrintToPdfOptions; -use nanobyte_opentelemetry::rocket::{TracingSpan, RequestId, OtelReqwestClient}; +use nanobyte_opentelemetry::rocket::{TracingSpan, OtelReqwestClient}; use nanobyte_tera::l18n::LanguageDescription; use ovlach_data::cv::data::CV; -use reqwest::Client; use rocket::fs::NamedFile; use ::rocket::{State, http::Status}; use ::rocket::get; use tempfile::NamedTempFile; use tera::Context; use tracing::{info_span, error, debug, Instrument}; -use crate::DefaultPerson; use crate::{chromium::rocket::BrowserHolder, tools::{tera::NanoTera, pdf::PdfStream, rocket::RequestLanguage}, services::cv::fetch_cv_data_from_backend, CVBackendConfig}; // TODO: request-id @@ -36,11 +34,9 @@ fn generate_pdf(browser: Browser, file: &NamedTempFile) -> Vec { //thread::sleep(Duration::from_secs(10)); - let bytes = info_span!("print_pdf").in_scope(|| { + info_span!("print_pdf").in_scope(|| { tab.print_to_pdf(Some(options)).unwrap() - }); - - return bytes; + }) } #[tracing::instrument] @@ -62,10 +58,9 @@ fn render_template(template_name: &str, file: &NamedTempFile, tera: NanoTera, cv #[get("/cv///output.pdf")] pub async fn render_pdf_cv(username: &str, tera: NanoTera, tracing: TracingSpan, request_client: OtelReqwestClient, - cv_config: &State, language: RequestLanguage, browser: BrowserHolder, - default_person: &State) -> Result { + cv_config: &State, language: RequestLanguage, browser: BrowserHolder) -> Result { async move { - match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &default_person.inner().default_person_name, &request_client.0).await { + match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &username.to_string(), &request_client.0).await { Ok(cv_data) => { let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap(); render_template("two_column", &file, tera, cv_data, language.language); @@ -86,10 +81,9 @@ pub async fn render_pdf_cv(username: &str, tera: NanoTera, tracing: TracingSpan, /// Route only for debuging #[get("/cv///output.html")] pub async fn render_html_cv(username: &str, tera: NanoTera, tracing: TracingSpan, request_client: OtelReqwestClient, - cv_config: &State, language: RequestLanguage, - default_person: &State) -> Result { + cv_config: &State, language: RequestLanguage) -> Result { async move { - match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &default_person.inner().default_person_name, &request_client.0).await { + match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &username.to_string(), &request_client.0).await { Ok(cv_data) => { let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap(); render_template("two_column", &file, tera, cv_data, language.language); diff --git a/src/tools/pdf.rs b/src/tools/pdf.rs index 1e5ab93..84bdc60 100644 --- a/src/tools/pdf.rs +++ b/src/tools/pdf.rs @@ -1,4 +1,4 @@ -use rocket::{response::{Responder, self}, Request, Response, http::{Header, ContentType}}; +use rocket::{response::{Responder, self}, Request, Response, http::ContentType}; use std::io::Cursor; diff --git a/src/tools/tera.rs b/src/tools/tera.rs index e69a508..79ffffd 100644 --- a/src/tools/tera.rs +++ b/src/tools/tera.rs @@ -14,7 +14,7 @@ pub struct NanoTera(pub Tera); impl<'r> FromRequest<'r> for NanoTera { type Error = (); - async fn from_request(request: &'r Request<'_>) -> Outcome { + async fn from_request(_request: &'r Request<'_>) -> Outcome { let mut tera = Tera::new("templates/*").unwrap(); tera.register_filter("translate", translate_filter); tera.register_filter("calculate_age", calculate_age); diff --git a/templates/two_column.html.tera b/templates/two_column.html.tera index f1ed2dd..a300db6 100644 --- a/templates/two_column.html.tera +++ b/templates/two_column.html.tera @@ -174,6 +174,11 @@ Phone +{{cv.person.phone | insert_space_every(times=3)}} + + {% if cv.person.web %} + {{cv.person.web}} + {% endif %} +
{{ "about-me" | translate(lang=lang) }}
{{ cv.person.about | lang_entity(lang=lang) }}