From 2c1977bbf97653bc3faae9d4cebcfb61c6cd347b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 3 Jul 2024 23:49:00 +0200 Subject: stuff --- src/headermap.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/headermap.rs (limited to 'src/headermap.rs') diff --git a/src/headermap.rs b/src/headermap.rs new file mode 100644 index 0000000..8712df1 --- /dev/null +++ b/src/headermap.rs @@ -0,0 +1,30 @@ +use crate::headers::Header; +use anyhow::Result; +use std::fmt::Display; + +pub struct HeaderMap(pub Vec<(String, String)>); + +impl HeaderMap { + pub fn new() -> Self { + Self(vec![]) + } + pub fn add(mut self, h: H) -> Self { + self.0.push((H::NAME.to_string(), format!("{h}"))); + self + } + pub fn get(&self) -> Option> { + self.0 + .iter() + .find(|(k, _)| k == H::NAME) + .map(|(_, v)| H::from_str(v)) + } +} + +impl Display for HeaderMap { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for (k, v) in &self.0 { + write!(f, "{k}: {v}\r\n")?; + } + Ok(()) + } +} -- cgit v1.2.3-70-g09d2