diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-04 23:39:04 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-04 23:39:04 +0100 |
commit | e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb (patch) | |
tree | 95574b22aad6ec370875115dd28b227586b5ebd2 | |
parent | 10dba4e7c79e622249cf4539cff3347619e15059 (diff) | |
download | gnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar gnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar.bz2 gnix-e7dc02a0c86c9f0b5d25dff5d20fe53cdbe671cb.tar.zst |
improve headers module (breaking change)
-rw-r--r-- | readme.md | 7 | ||||
-rw-r--r-- | src/modules/headers.rs | 19 |
2 files changed, 17 insertions, 9 deletions
@@ -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) }) } } |