From e8a1850c79311eedbf6edfe0884257499f6287a8 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 21 Mar 2018 20:04:35 -0700 Subject: [PATCH] add helper conversion from ClientResponse for HttpResponseBuilder --- src/httpresponse.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/httpresponse.rs b/src/httpresponse.rs index ab06adfe7..326281f78 100644 --- a/src/httpresponse.rs +++ b/src/httpresponse.rs @@ -18,6 +18,8 @@ use error::Error; use handler::Responder; use header::{Header, IntoHeaderValue, ContentEncoding}; use httprequest::HttpRequest; +use httpmessage::HttpMessage; +use client::ClientResponse; /// max write buffer size 64k pub(crate) const MAX_WRITE_BUFFER_SIZE: usize = 65_536; @@ -722,6 +724,20 @@ impl Responder for BytesMut { } } +/// Create `HttpResponseBuilder` from `ClientResponse` +/// +/// It is useful for proxy response. This implementation +/// copies all responses's headers and status. +impl<'a> From<&'a ClientResponse> for HttpResponseBuilder { + fn from(resp: &'a ClientResponse) -> HttpResponseBuilder { + let mut builder = HttpResponse::build(resp.status()); + for (key, value) in resp.headers() { + builder.header(key.clone(), value.clone()); + } + builder + } +} + #[derive(Debug)] struct InnerHttpResponse { version: Option,