i18n+filtering fork - fluent-templates v2
at main 105 lines 3.2 kB view raw
1use anyhow::Result; 2use axum::{extract::State, response::IntoResponse}; 3use axum_extra::extract::Cached; 4use axum_htmx::HxBoosted; 5 6use minijinja::context as template_context; 7 8use crate::{ 9 create_renderer, 10 http::{ 11 context::WebContext, errors::WebError, middleware_auth::Auth, middleware_i18n::Language, 12 }, 13}; 14 15pub async fn handle_privacy_policy( 16 State(web_context): State<WebContext>, 17 HxBoosted(hx_boosted): HxBoosted, 18 Language(language): Language, 19 Cached(auth): Cached<Auth>, 20) -> Result<impl IntoResponse, WebError> { 21 // Create the template renderer with enhanced context 22 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false); 23 24 let canonical_url = format!("https://{}/privacy-policy", web_context.config.external_base); 25 26 Ok(( 27 http::StatusCode::OK, 28 renderer.render_template( 29 "privacy-policy", 30 template_context! {}, 31 auth.0.as_ref(), 32 &canonical_url, 33 ), 34 ) 35 .into_response()) 36} 37 38pub async fn handle_terms_of_service( 39 State(web_context): State<WebContext>, 40 HxBoosted(hx_boosted): HxBoosted, 41 Language(language): Language, 42 Cached(auth): Cached<Auth>, 43) -> Result<impl IntoResponse, WebError> { 44 // Create the template renderer with enhanced context 45 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false); 46 47 let canonical_url = format!("https://{}/terms-of-service", web_context.config.external_base); 48 49 Ok(( 50 http::StatusCode::OK, 51 renderer.render_template( 52 "terms-of-service", 53 template_context! {}, 54 auth.0.as_ref(), 55 &canonical_url, 56 ), 57 ) 58 .into_response()) 59} 60 61pub async fn handle_cookie_policy( 62 State(web_context): State<WebContext>, 63 HxBoosted(hx_boosted): HxBoosted, 64 Language(language): Language, 65 Cached(auth): Cached<Auth>, 66) -> Result<impl IntoResponse, WebError> { 67 // Create the template renderer with enhanced context 68 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false); 69 70 let canonical_url = format!("https://{}/cookie-policy", web_context.config.external_base); 71 72 Ok(( 73 http::StatusCode::OK, 74 renderer.render_template( 75 "cookie-policy", 76 template_context! {}, 77 auth.0.as_ref(), 78 &canonical_url, 79 ), 80 ) 81 .into_response()) 82} 83 84pub async fn handle_acknowledgement( 85 State(web_context): State<WebContext>, 86 HxBoosted(hx_boosted): HxBoosted, 87 Language(language): Language, 88 Cached(auth): Cached<Auth>, 89) -> Result<impl IntoResponse, WebError> { 90 // Create the template renderer with enhanced context 91 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false); 92 93 let canonical_url = format!("https://{}/acknowledgement", web_context.config.external_base); 94 95 Ok(( 96 http::StatusCode::OK, 97 renderer.render_template( 98 "acknowledgement", 99 template_context! {}, 100 auth.0.as_ref(), 101 &canonical_url, 102 ), 103 ) 104 .into_response()) 105}