tmp commit
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
use headless_chrome::Browser;
|
||||
use headless_chrome::types::PrintToPdfOptions;
|
||||
use nanobyte_opentelemetry::rocket::{TracingSpan, RequestId, OtelReqwestClient};
|
||||
use ovlach_data::cv::cv::CV;
|
||||
use nanobyte_tera::l18n::LanguageDescription;
|
||||
use ovlach_data::cv::data::CV;
|
||||
use reqwest::Client;
|
||||
use rocket::fs::NamedFile;
|
||||
use ::rocket::{State, http::Status};
|
||||
@@ -9,6 +10,7 @@ use ::rocket::get;
|
||||
use tempfile::NamedTempFile;
|
||||
use tera::Context;
|
||||
use tracing::{info_span, error, debug};
|
||||
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
|
||||
@@ -31,7 +33,7 @@ fn generate_pdf(browser: Browser, file: &NamedTempFile) -> Vec<u8> {
|
||||
..PrintToPdfOptions::default()
|
||||
};
|
||||
|
||||
//thread::sleep(Duration::from_secs(10));
|
||||
//thread::sleep(Duration::from_secs(10));
|
||||
|
||||
let bytes = info_span!("print_pdf").in_scope(|| {
|
||||
tab.print_to_pdf(Some(options)).unwrap()
|
||||
@@ -45,8 +47,8 @@ fn render_template(template_name: &str, file: &NamedTempFile, tera: NanoTera, cv
|
||||
// TODO: handle errors
|
||||
let mut tera_context = Context::new();
|
||||
tera_context.insert("cv", &cv);
|
||||
tera_context.insert("lang", language.as_str());
|
||||
|
||||
tera_context.insert("lang", &LanguageDescription::new(&language, "ovlach_pdf"));
|
||||
|
||||
match tera.0.render_to("two_column.html.tera", &tera_context, file) {
|
||||
Ok(_) => {
|
||||
debug!("Rendered template to {}", file.path().to_str().unwrap());
|
||||
@@ -59,11 +61,12 @@ fn render_template(template_name: &str, file: &NamedTempFile, tera: NanoTera, cv
|
||||
|
||||
#[get("/cv/<username>/<language>/output.pdf")]
|
||||
pub async fn render_pdf_cv(username: &str, tera: NanoTera, tracing: TracingSpan, request_client: OtelReqwestClient,
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage, browser: BrowserHolder) -> Result<PdfStream, Status> {
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage, browser: BrowserHolder,
|
||||
default_person: &State<DefaultPerson>) -> Result<PdfStream, Status> {
|
||||
let entered_span = tracing.0.enter();
|
||||
match fetch_cv_data_from_backend(cv_config.cv_backend_path.clone(), request_client.0).await {
|
||||
match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &default_person.inner().default_person_name, &request_client.0).await {
|
||||
Ok(cv_data) => {
|
||||
let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap();
|
||||
let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap();
|
||||
render_template("two_column", &file, tera, cv_data, language.language);
|
||||
let span = info_span!("render_pdf", username = username);
|
||||
let pdf = span.in_scope(||{
|
||||
@@ -82,11 +85,12 @@ pub async fn render_pdf_cv(username: &str, tera: NanoTera, tracing: TracingSpan,
|
||||
/// Route only for debuging
|
||||
#[get("/cv/<username>/<language>/output.html")]
|
||||
pub async fn render_html_cv(username: &str, tera: NanoTera, tracing: TracingSpan, request_client: OtelReqwestClient,
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage) -> Result<NamedFile, Status> {
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage,
|
||||
default_person: &State<DefaultPerson>) -> Result<NamedFile, Status> {
|
||||
let _ = tracing.0.enter();
|
||||
match fetch_cv_data_from_backend(cv_config.cv_backend_path.clone(), request_client.0).await {
|
||||
match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &default_person.inner().default_person_name, &request_client.0).await {
|
||||
Ok(cv_data) => {
|
||||
let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap();
|
||||
let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap();
|
||||
render_template("two_column", &file, tera, cv_data, language.language);
|
||||
Ok(NamedFile::open(file.path()).await.unwrap())
|
||||
},
|
||||
@@ -95,5 +99,5 @@ pub async fn render_html_cv(username: &str, tera: NanoTera, tracing: TracingSpan
|
||||
Err(Status::InternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user