diff options
Diffstat (limited to 'src/modules/headers.rs')
-rw-r--r-- | src/modules/headers.rs | 19 |
1 files changed, 12 insertions, 7 deletions
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) }) } } |