Loading codegen/src/ops.rs +3 −1 Original line number Diff line number Diff line Loading @@ -627,9 +627,11 @@ fn codegen_op_http_call(op: &Operation) { if op.name == "GetObject" { g!("resp.headers.extend(overrided_headers);"); g!("super::get_object::merge_custom_headers(&mut resp, s3_resp.headers);"); } else { g!("resp.headers.extend(s3_resp.headers);"); } g!("resp.headers.extend(s3_resp.headers);"); g!("resp.extensions.extend(s3_resp.extensions);"); g!("Ok(resp)"); Loading crates/s3s/src/ops/generated.rs +1 −1 Original line number Diff line number Diff line Loading @@ -2558,7 +2558,7 @@ impl super::Operation for GetObject { }; let mut resp = Self::serialize_http(s3_resp.output)?; resp.headers.extend(overrided_headers); resp.headers.extend(s3_resp.headers); super::get_object::merge_custom_headers(&mut resp, s3_resp.headers); resp.extensions.extend(s3_resp.extensions); Ok(resp) } Loading crates/s3s/src/ops/get_object.rs +14 −0 Original line number Diff line number Diff line Loading @@ -2,10 +2,13 @@ use crate::dto::GetObjectInput; use crate::dto::Timestamp; use crate::dto::TimestampFormat; use crate::header; use crate::http::Response; use crate::utils::format::fmt_timestamp; use crate::S3Request; use crate::S3Result; use hyper::header::CONTENT_LENGTH; use hyper::header::TRANSFER_ENCODING; use hyper::http::HeaderName; use hyper::http::HeaderValue; use hyper::HeaderMap; Loading Loading @@ -42,3 +45,14 @@ fn add_ts(map: &mut HeaderMap<HeaderValue>, name: HeaderName, value: Option<&Tim } Ok(()) } pub fn merge_custom_headers(resp: &mut Response, headers: HeaderMap<HeaderValue>) { resp.headers.extend(headers); // special case for https://github.com/Nugine/s3s/issues/80 if let Some(val) = resp.headers.get(TRANSFER_ENCODING) { if val.as_bytes() == b"chunked" { resp.headers.remove(CONTENT_LENGTH); } } } Loading
codegen/src/ops.rs +3 −1 Original line number Diff line number Diff line Loading @@ -627,9 +627,11 @@ fn codegen_op_http_call(op: &Operation) { if op.name == "GetObject" { g!("resp.headers.extend(overrided_headers);"); g!("super::get_object::merge_custom_headers(&mut resp, s3_resp.headers);"); } else { g!("resp.headers.extend(s3_resp.headers);"); } g!("resp.headers.extend(s3_resp.headers);"); g!("resp.extensions.extend(s3_resp.extensions);"); g!("Ok(resp)"); Loading
crates/s3s/src/ops/generated.rs +1 −1 Original line number Diff line number Diff line Loading @@ -2558,7 +2558,7 @@ impl super::Operation for GetObject { }; let mut resp = Self::serialize_http(s3_resp.output)?; resp.headers.extend(overrided_headers); resp.headers.extend(s3_resp.headers); super::get_object::merge_custom_headers(&mut resp, s3_resp.headers); resp.extensions.extend(s3_resp.extensions); Ok(resp) } Loading
crates/s3s/src/ops/get_object.rs +14 −0 Original line number Diff line number Diff line Loading @@ -2,10 +2,13 @@ use crate::dto::GetObjectInput; use crate::dto::Timestamp; use crate::dto::TimestampFormat; use crate::header; use crate::http::Response; use crate::utils::format::fmt_timestamp; use crate::S3Request; use crate::S3Result; use hyper::header::CONTENT_LENGTH; use hyper::header::TRANSFER_ENCODING; use hyper::http::HeaderName; use hyper::http::HeaderValue; use hyper::HeaderMap; Loading Loading @@ -42,3 +45,14 @@ fn add_ts(map: &mut HeaderMap<HeaderValue>, name: HeaderName, value: Option<&Tim } Ok(()) } pub fn merge_custom_headers(resp: &mut Response, headers: HeaderMap<HeaderValue>) { resp.headers.extend(headers); // special case for https://github.com/Nugine/s3s/issues/80 if let Some(val) = resp.headers.get(TRANSFER_ENCODING) { if val.as_bytes() == b"chunked" { resp.headers.remove(CONTENT_LENGTH); } } }