From a4d6d79c16849e618ad1a38afe428b812245fdfa Mon Sep 17 00:00:00 2001 From: Zynh0722 Date: Sun, 5 Nov 2023 11:08:20 -0800 Subject: [PATCH] create extractor for hx-request --- src/lib/hx_request.rs | 20 ++++++++++++++++++++ src/lib/mod.rs | 1 + 2 files changed, 21 insertions(+) create mode 100644 src/lib/hx_request.rs diff --git a/src/lib/hx_request.rs b/src/lib/hx_request.rs new file mode 100644 index 0000000..47fb61c --- /dev/null +++ b/src/lib/hx_request.rs @@ -0,0 +1,20 @@ +use std::convert::Infallible; + +use axum::{async_trait, extract::FromRequestParts, http::request::Parts}; + +const HX_REQUEST: &str = "HX-Request"; + +#[derive(Debug, Copy, Clone)] +pub struct HxRequest(bool); + +#[async_trait] +impl FromRequestParts for HxRequest +where + S: Send + Sync, +{ + type Rejection = Infallible; + + async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { + Ok(HxRequest(parts.headers.get(HX_REQUEST).is_some())) + } +} diff --git a/src/lib/mod.rs b/src/lib/mod.rs index 309584f..a1106da 100644 --- a/src/lib/mod.rs +++ b/src/lib/mod.rs @@ -1,3 +1,4 @@ pub mod models; pub mod schema; pub mod report; +pub mod hx_request;