aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-04 23:39:04 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-04 23:39:04 +0100
commite7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb (patch)
tree95574b22aad6ec370875115dd28b227586b5ebd2
parent10dba4e7c79e622249cf4539cff3347619e15059 (diff)
downloadgnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar
gnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar.bz2
gnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar.zst
improve headers module (breaking change)
-rw-r--r--readme.md7
-rw-r--r--src/modules/headers.rs19
2 files changed, 17 insertions, 9 deletions
diff --git a/readme.md b/readme.md
index f241d66..507ca34 100644
--- a/readme.md
+++ b/readme.md
@@ -199,8 +199,11 @@ themselves; in that case the request is passed on.
- **module `headers`**
- Appends multiple headers to the response.
- - `headers`: A map of all header name-value pairs. (object string:string)
- - `inner`: The handler to add the headers to. (module)
+ - `request`: A map of all header name-value pairs added before the request is
+ passed to `next`. (object string:string)
+ - `response`: A map headers added to responsed from `next`. (object
+ string:string)
+ - `next`: The handler to add the headers to. (module)
- **module `redirect`**
- Responds with a permanent redirect.
diff --git a/src/modules/headers.rs b/src/modules/headers.rs
index 52686eb..bdfbdc4 100644
--- a/src/modules/headers.rs
+++ b/src/modules/headers.rs
@@ -13,8 +13,9 @@ pub struct HeadersKind;
#[derive(Deserialize)]
pub struct Headers {
- headers: HeaderMapWrap,
- inner: DynNode,
+ request: HeaderMapWrap,
+ response: HeaderMapWrap,
+ next: DynNode,
}
impl NodeKind for HeadersKind {
@@ -30,13 +31,17 @@ impl Node for Headers {
fn handle<'a>(
&'a self,
context: &'a mut NodeContext,
- request: NodeRequest,
+ mut request: NodeRequest,
) -> Pin<Box<dyn Future<Output = Result<NodeResponse, ServiceError>> + Send + Sync + 'a>> {
Box::pin(async move {
- let mut resp = self.inner.handle(context, request).await?;
- resp.headers_mut()
- .extend(self.headers.0.clone().into_iter());
- Ok(resp)
+ request
+ .headers_mut()
+ .extend(self.request.0.clone().into_iter());
+ let mut response = self.next.handle(context, request).await?;
+ response
+ .headers_mut()
+ .extend(self.response.0.clone().into_iter());
+ Ok(response)
})
}
}