Skip to content

Commit cd5f365

Browse files
khueyseanmonstar
authored andcommitted
Add headers/headers_mut accessors. (#293)
1 parent 5ebe81d commit cd5f365

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

src/request.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,6 @@ impl<T> Request<T> {
565565
&mut self.head.headers
566566
}
567567

568-
569568
/// Returns a reference to the associated extensions.
570569
///
571570
/// # Examples
@@ -940,6 +939,36 @@ impl Builder {
940939
}
941940
}
942941

942+
/// Get header on this request builder.
943+
/// when builder has error returns None
944+
///
945+
/// # Example
946+
///
947+
/// ```
948+
/// # use http::*;
949+
/// # use http::header::HeaderValue;
950+
/// # use http::request::Builder;
951+
/// let mut req = Request::builder();
952+
/// {
953+
/// let headers = req.headers_mut().unwrap();
954+
/// headers.insert("Accept", HeaderValue::from_static("text/html"));
955+
/// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar"));
956+
/// }
957+
/// let headers = req.headers_ref().unwrap();
958+
/// assert_eq!( headers["Accept"], "text/html" );
959+
/// assert_eq!( headers["X-Custom-Foo"], "bar" );
960+
/// ```
961+
pub fn headers_mut(&mut self) -> Option<&mut HeaderMap<HeaderValue>> {
962+
if self.err.is_some() {
963+
return None;
964+
}
965+
match self.head
966+
{
967+
Some(ref mut head) => Some(&mut head.headers),
968+
None => None
969+
}
970+
}
971+
943972
/// Adds an extension to this builder
944973
///
945974
/// # Examples

src/response.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,63 @@ impl Builder {
630630
self
631631
}
632632

633+
/// Get header on this response builder.
634+
/// when builder has error returns None
635+
///
636+
/// # Example
637+
///
638+
/// ```
639+
/// # use http::*;
640+
/// # use http::header::HeaderValue;
641+
/// # use http::response::Builder;
642+
/// let mut res = Response::builder();
643+
/// res.header("Accept", "text/html")
644+
/// .header("X-Custom-Foo", "bar");
645+
/// let headers = res.headers_ref().unwrap();
646+
/// assert_eq!( headers["Accept"], "text/html" );
647+
/// assert_eq!( headers["X-Custom-Foo"], "bar" );
648+
/// ```
649+
pub fn headers_ref(&self) -> Option<&HeaderMap<HeaderValue>> {
650+
if self.err.is_some() {
651+
return None;
652+
}
653+
match self.head
654+
{
655+
Some(ref head) => Some(&head.headers),
656+
None => None
657+
}
658+
}
659+
660+
/// Get header on this response builder.
661+
/// when builder has error returns None
662+
///
663+
/// # Example
664+
///
665+
/// ```
666+
/// # use http::*;
667+
/// # use http::header::HeaderValue;
668+
/// # use http::response::Builder;
669+
/// let mut res = Response::builder();
670+
/// {
671+
/// let headers = res.headers_mut().unwrap();
672+
/// headers.insert("Accept", HeaderValue::from_static("text/html"));
673+
/// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar"));
674+
/// }
675+
/// let headers = res.headers_ref().unwrap();
676+
/// assert_eq!( headers["Accept"], "text/html" );
677+
/// assert_eq!( headers["X-Custom-Foo"], "bar" );
678+
/// ```
679+
pub fn headers_mut(&mut self) -> Option<&mut HeaderMap<HeaderValue>> {
680+
if self.err.is_some() {
681+
return None;
682+
}
683+
match self.head
684+
{
685+
Some(ref mut head) => Some(&mut head.headers),
686+
None => None
687+
}
688+
}
689+
633690
/// Adds an extension to this builder
634691
///
635692
/// # Examples

0 commit comments

Comments
 (0)