From 5dd0fafce20ed37fdc97dc96539391ebdebffaff Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 6 Jul 2024 01:19:02 +0200 Subject: generalize to support requests. untested --- src/encoding/headermap.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/encoding/headermap.rs') diff --git a/src/encoding/headermap.rs b/src/encoding/headermap.rs index 65ef8d2..5d1fa0a 100644 --- a/src/encoding/headermap.rs +++ b/src/encoding/headermap.rs @@ -1,5 +1,5 @@ use super::headers::Header; -use anyhow::Result; +use anyhow::{anyhow, Result}; use std::fmt::Display; #[derive(Debug, Clone)] @@ -38,6 +38,17 @@ impl Display for HeaderMap { Ok(()) } } +impl HeaderMap { + pub fn parse<'a>(lines: &mut impl Iterator) -> Result { + let mut headers = HeaderMap::new(); + for line in lines { + // TODO multiline values + let (key, value) = line.split_once(":").ok_or(anyhow!("header malformed"))?; + headers.insert_raw(key.trim().to_string(), value.trim().to_string()) + } + Ok(headers) + } +} impl FromIterator<(String, String)> for HeaderMap { fn from_iter>(iter: T) -> Self { -- cgit v1.2.3-70-g09d2