From 9a928541893df295caba2e805adcea59847b6ec7 Mon Sep 17 00:00:00 2001 From: Valerio Ageno Date: Sat, 29 Jun 2024 18:24:05 +0200 Subject: [PATCH 1/4] fix: include headers into response --- examples/reqwest-response/src/main.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/examples/reqwest-response/src/main.rs b/examples/reqwest-response/src/main.rs index b6dfeb70b5..3461b27e1d 100644 --- a/examples/reqwest-response/src/main.rs +++ b/examples/reqwest-response/src/main.rs @@ -6,7 +6,7 @@ use std::{convert::Infallible, time::Duration}; -use axum::http::{HeaderMap, StatusCode}; +use axum::http::StatusCode; use axum::{ body::{Body, Bytes}, extract::State, @@ -60,15 +60,20 @@ async fn proxy_via_reqwest(State(client): State) -> Response { } }; - let response_builder = Response::builder().status(reqwest_response.status().as_u16()); + let mut response_builder = Response::builder().status(reqwest_response.status().as_u16()); - // Here the mapping of headers is required due to reqwest and axum differ on the http crate versions - let mut headers = HeaderMap::with_capacity(reqwest_response.headers().len()); - headers.extend(reqwest_response.headers().into_iter().map(|(name, value)| { - let name = HeaderName::from_bytes(name.as_ref()).unwrap(); - let value = HeaderValue::from_bytes(value.as_ref()).unwrap(); - (name, value) - })); + { + let headers = response_builder.headers_mut().unwrap(); + + reqwest_response + .headers() + .into_iter() + .for_each(|(name, value)| { + let name = HeaderName::from_bytes(name.as_ref()).unwrap(); + let value = HeaderValue::from_bytes(value.as_ref()).unwrap(); + headers.insert(name, value); + }); + } response_builder .body(Body::from_stream(reqwest_response.bytes_stream())) From 9326fd6b8068cc3845d17c93014c6436f2554a85 Mon Sep 17 00:00:00 2001 From: Valerio Ageno Date: Tue, 23 Jul 2024 18:17:58 +0200 Subject: [PATCH 2/4] refactor: use for loop instead of for_each --- examples/reqwest-response/src/main.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/examples/reqwest-response/src/main.rs b/examples/reqwest-response/src/main.rs index 3461b27e1d..659852efef 100644 --- a/examples/reqwest-response/src/main.rs +++ b/examples/reqwest-response/src/main.rs @@ -62,17 +62,12 @@ async fn proxy_via_reqwest(State(client): State) -> Response { let mut response_builder = Response::builder().status(reqwest_response.status().as_u16()); - { - let headers = response_builder.headers_mut().unwrap(); + let headers = response_builder.headers_mut().unwrap(); - reqwest_response - .headers() - .into_iter() - .for_each(|(name, value)| { - let name = HeaderName::from_bytes(name.as_ref()).unwrap(); - let value = HeaderValue::from_bytes(value.as_ref()).unwrap(); - headers.insert(name, value); - }); + for (name, value) in reqwest_response.headers() { + let name = HeaderName::from_bytes(name.as_ref()).unwrap(); + let value = HeaderValue::from_bytes(value.as_ref()).unwrap(); + headers.insert(name, value); } response_builder From 10dfcb926c92de9b6fa33d255d99f79b68864809 Mon Sep 17 00:00:00 2001 From: Valerio Ageno Date: Fri, 26 Jul 2024 16:13:05 +0200 Subject: [PATCH 3/4] feat: turn implementation back and set the headers collected in the response_builder --- examples/reqwest-response/src/main.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/examples/reqwest-response/src/main.rs b/examples/reqwest-response/src/main.rs index 659852efef..b241b9cc2a 100644 --- a/examples/reqwest-response/src/main.rs +++ b/examples/reqwest-response/src/main.rs @@ -6,7 +6,7 @@ use std::{convert::Infallible, time::Duration}; -use axum::http::StatusCode; +use axum::http::{HeaderMap, StatusCode}; use axum::{ body::{Body, Bytes}, extract::State, @@ -62,13 +62,16 @@ async fn proxy_via_reqwest(State(client): State) -> Response { let mut response_builder = Response::builder().status(reqwest_response.status().as_u16()); - let headers = response_builder.headers_mut().unwrap(); + // Here the mapping of headers is required due to reqwest and axum differ on the http crate versions + let mut headers = HeaderMap::with_capacity(reqwest_response.headers().len()); - for (name, value) in reqwest_response.headers() { + headers.extend(reqwest_response.headers().into_iter().map(|(name, value)| { let name = HeaderName::from_bytes(name.as_ref()).unwrap(); let value = HeaderValue::from_bytes(value.as_ref()).unwrap(); - headers.insert(name, value); - } + (name, value) + })); + + *response_builder.headers_mut().unwrap() = headers; response_builder .body(Body::from_stream(reqwest_response.bytes_stream())) From 28a2f3f48a0753e9f933a4afe60671ada64a81e3 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 26 Jul 2024 19:32:54 +0200 Subject: [PATCH 4/4] Revert whitespace change --- examples/reqwest-response/src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/reqwest-response/src/main.rs b/examples/reqwest-response/src/main.rs index b241b9cc2a..cbfaae33dd 100644 --- a/examples/reqwest-response/src/main.rs +++ b/examples/reqwest-response/src/main.rs @@ -64,7 +64,6 @@ async fn proxy_via_reqwest(State(client): State) -> Response { // Here the mapping of headers is required due to reqwest and axum differ on the http crate versions let mut headers = HeaderMap::with_capacity(reqwest_response.headers().len()); - headers.extend(reqwest_response.headers().into_iter().map(|(name, value)| { let name = HeaderName::from_bytes(name.as_ref()).unwrap(); let value = HeaderValue::from_bytes(value.as_ref()).unwrap();