Skip to content

Commit b8df383

Browse files
committed
Move headers to Handler
1 parent 021f7cf commit b8df383

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ pub struct Config {
3939
pub struct Route {
4040
pub route: route::Route,
4141
pub rewrite_path: Option<String>,
42+
#[serde(with = "http_serde::header_map", default)]
43+
pub response_headers: http::HeaderMap,
4244
#[serde(flatten)]
4345
pub kind: RouteKind,
4446
}
@@ -74,8 +76,6 @@ pub struct JsonRoute {
7476
pub struct ProxyRoute {
7577
#[serde(rename = "url", with = "http_serde::uri")]
7678
pub uri: Uri,
77-
#[serde(with = "http_serde::header_map", default)]
78-
pub response_headers: http::HeaderMap,
7979
}
8080

8181
impl Config {

src/handler/mod.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::config;
1515
pub struct Handler {
1616
kind: HandlerKind,
1717
path_rewriter: Option<PathRewriter>,
18+
response_headers: http::HeaderMap,
1819
}
1920

2021
#[derive(Debug)]
@@ -37,6 +38,7 @@ impl Handler {
3738
rewrite_path,
3839
route,
3940
kind,
41+
response_headers,
4042
} = route;
4143
let path_rewriter = rewrite_path.map(|replace| {
4244
let regex = route.to_regex();
@@ -53,6 +55,7 @@ impl Handler {
5355
Ok(Handler {
5456
path_rewriter,
5557
kind,
58+
response_headers,
5659
})
5760
}
5861

@@ -65,12 +68,18 @@ impl Handler {
6568
None => request.uri().path().to_owned(),
6669
};
6770

68-
match &self.kind {
71+
let mut result = match &self.kind {
6972
HandlerKind::File(file) => file.handle(request).await,
7073
HandlerKind::Dir(dir) => dir.handle(request, &path).await,
7174
HandlerKind::Proxy(proxy) => proxy.handle(request, &path).await,
7275
HandlerKind::Json(json) => json.handle(request, &path).await,
76+
};
77+
78+
if let Ok(response) = &mut result {
79+
response.headers_mut().extend(self.response_headers.clone());
7380
}
81+
82+
result
7483
}
7584
}
7685

src/handler/proxy.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,7 @@ impl ProxyHandler {
5252
log::debug!("Forwarding request to `{}`", request.uri());
5353

5454
match self.client.request(request).await {
55-
Ok(mut response) => {
56-
response
57-
.headers_mut()
58-
.extend(self.config.response_headers.clone());
55+
Ok(response) => {
5956
Ok(response)
6057
}
6158
Err(err) => {

0 commit comments

Comments
 (0)