From 9bdc9fc7272350bb599e29c596966c555efd5158 Mon Sep 17 00:00:00 2001 From: transcaffeine Date: Wed, 3 Jul 2024 21:26:49 +0200 Subject: [PATCH] feat: create utils module with function for htmx redirects --- src/main.rs | 1 + src/utils.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/utils.rs diff --git a/src/main.rs b/src/main.rs index 47bc6b4..76d560b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,7 @@ use crate::config::Config; pub mod handlers; mod db; mod config; +mod utils; #[tokio::main] async fn main() { diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..45c1d9d --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,19 @@ +use axum::{ + http::{ + HeaderMap, + }, +}; + +use axum_core::response::IntoResponse; + +use crate::AppError; + +pub fn make_htmx_redirect(request_headers: HeaderMap, target: &str) -> Result { + let mut headers = HeaderMap::new(); + let header_name: &str = request_headers + .get("HX-Request") + .filter(|v| *v == "true") + .map_or_else(|| "Location", |_| "HX-Location"); + headers.insert(header_name, target.parse().unwrap()); + Ok(headers) +}