aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/headermap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/headermap.rs')
-rw-r--r--src/encoding/headermap.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/encoding/headermap.rs b/src/encoding/headermap.rs
index 313d8b5..2f9f097 100644
--- a/src/encoding/headermap.rs
+++ b/src/encoding/headermap.rs
@@ -13,11 +13,17 @@ impl HeaderMap {
self.0.push((H::NAME.to_string(), format!("{h}")));
self
}
- pub fn get<H: Header>(&self) -> Option<Result<H>> {
+ pub fn insert<H: Header>(&mut self, h: H) {
+ self.0.push((H::NAME.to_string(), format!("{h}")));
+ }
+ pub fn get_raw(&self, name: &str) -> Option<&str> {
self.0
.iter()
- .find(|(k, _)| k == H::NAME)
- .map(|(_, v)| H::from_str(v))
+ .find(|(k, _)| k.eq_ignore_ascii_case(name))
+ .map(|(_, v)| v.as_str())
+ }
+ pub fn get<H: Header>(&self) -> Option<Result<H>> {
+ self.get_raw(H::NAME).map(H::from_str)
}
pub fn insert_raw(&mut self, key: String, value: String) {
self.0.push((key, value))
@@ -32,3 +38,9 @@ impl Display for HeaderMap {
Ok(())
}
}
+
+impl FromIterator<(String, String)> for HeaderMap {
+ fn from_iter<T: IntoIterator<Item = (String, String)>>(iter: T) -> Self {
+ Self(Vec::from_iter(iter))
+ }
+}