Add a get_raw method, which allows users to access the raw value of a header
This method is marked unsafe, as it should not be used in normal code because it can easily invalidate header representations. Fixes #10
This commit is contained in:
@@ -127,6 +127,27 @@ impl Headers {
|
|||||||
self.get_ref().map(|v: &H| v.clone())
|
self.get_ref().map(|v: &H| v.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Access the raw value of a header, if it exists and has not
|
||||||
|
/// been already parsed.
|
||||||
|
///
|
||||||
|
/// If the header field has already been parsed into a typed header,
|
||||||
|
/// then you *must* access it through that representation.
|
||||||
|
///
|
||||||
|
/// Example:
|
||||||
|
/// ```
|
||||||
|
/// # use hyper::header::{Headers, ContentType};
|
||||||
|
/// # let mut headers = Headers::new();
|
||||||
|
/// let raw_content_type = unsafe { headers.get_raw("content-type") };
|
||||||
|
/// ```
|
||||||
|
pub unsafe fn get_raw(&self, name: &'static str) -> Option<&[Vec<u8>]> {
|
||||||
|
self.data.find(&name).and_then(|item| {
|
||||||
|
match *item {
|
||||||
|
Raw(ref raw) => Some(raw.as_slice()),
|
||||||
|
_ => None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// Get a reference to the header field's value, if it exists.
|
/// Get a reference to the header field's value, if it exists.
|
||||||
pub fn get_ref<H: Header>(&mut self) -> Option<&H> {
|
pub fn get_ref<H: Header>(&mut self) -> Option<&H> {
|
||||||
self.data.find_mut(&header_name::<H>()).and_then(|item| {
|
self.data.find_mut(&header_name::<H>()).and_then(|item| {
|
||||||
|
|||||||
Reference in New Issue
Block a user