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;