diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-05 02:27:48 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-05 02:27:48 +0200 |
commit | 384ddd782b989218ceb55b7147aa8698425d1464 (patch) | |
tree | 5bfb61317db2e9260129b53b8444f3c79a0bc708 /src/encoding/headermap.rs | |
parent | 3f80205783bcf6a2ed682f6f21e5b1877d597328 (diff) | |
download | sip-rs-384ddd782b989218ceb55b7147aa8698425d1464.tar sip-rs-384ddd782b989218ceb55b7147aa8698425d1464.tar.bz2 sip-rs-384ddd782b989218ceb55b7147aa8698425d1464.tar.zst |
simpletransaction works
Diffstat (limited to 'src/encoding/headermap.rs')
-rw-r--r-- | src/encoding/headermap.rs | 18 |
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)) + } +} |