diff --git a/src/request.rs b/src/request.rs index 2fc1163..ac76470 100644 --- a/src/request.rs +++ b/src/request.rs @@ -565,7 +565,6 @@ impl Request { &mut self.head.headers } - /// Returns a reference to the associated extensions. /// /// # Examples @@ -940,6 +939,36 @@ impl Builder { } } + /// Get header on this request builder. + /// when builder has error returns None + /// + /// # Example + /// + /// ``` + /// # use http::*; + /// # use http::header::HeaderValue; + /// # use http::request::Builder; + /// let mut req = Request::builder(); + /// { + /// let headers = req.headers_mut().unwrap(); + /// headers.insert("Accept", HeaderValue::from_static("text/html")); + /// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar")); + /// } + /// let headers = req.headers_ref().unwrap(); + /// assert_eq!( headers["Accept"], "text/html" ); + /// assert_eq!( headers["X-Custom-Foo"], "bar" ); + /// ``` + pub fn headers_mut(&mut self) -> Option<&mut HeaderMap> { + if self.err.is_some() { + return None; + } + match self.head + { + Some(ref mut head) => Some(&mut head.headers), + None => None + } + } + /// Adds an extension to this builder /// /// # Examples diff --git a/src/response.rs b/src/response.rs index e628cf6..fc87750 100644 --- a/src/response.rs +++ b/src/response.rs @@ -630,6 +630,63 @@ impl Builder { self } + /// Get header on this response builder. + /// when builder has error returns None + /// + /// # Example + /// + /// ``` + /// # use http::*; + /// # use http::header::HeaderValue; + /// # use http::response::Builder; + /// let mut res = Response::builder(); + /// res.header("Accept", "text/html") + /// .header("X-Custom-Foo", "bar"); + /// let headers = res.headers_ref().unwrap(); + /// assert_eq!( headers["Accept"], "text/html" ); + /// assert_eq!( headers["X-Custom-Foo"], "bar" ); + /// ``` + pub fn headers_ref(&self) -> Option<&HeaderMap> { + if self.err.is_some() { + return None; + } + match self.head + { + Some(ref head) => Some(&head.headers), + None => None + } + } + + /// Get header on this response builder. + /// when builder has error returns None + /// + /// # Example + /// + /// ``` + /// # use http::*; + /// # use http::header::HeaderValue; + /// # use http::response::Builder; + /// let mut res = Response::builder(); + /// { + /// let headers = res.headers_mut().unwrap(); + /// headers.insert("Accept", HeaderValue::from_static("text/html")); + /// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar")); + /// } + /// let headers = res.headers_ref().unwrap(); + /// assert_eq!( headers["Accept"], "text/html" ); + /// assert_eq!( headers["X-Custom-Foo"], "bar" ); + /// ``` + pub fn headers_mut(&mut self) -> Option<&mut HeaderMap> { + if self.err.is_some() { + return None; + } + match self.head + { + Some(ref mut head) => Some(&mut head.headers), + None => None + } + } + /// Adds an extension to this builder /// /// # Examples