From 272d3ddb76e8f017a8a2fe0899e58e0dff840c9f Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 7 Jul 2024 01:35:50 +0200 Subject: eyeballed uri parser --- src/encoding/headers.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/encoding/headers.rs') diff --git a/src/encoding/headers.rs b/src/encoding/headers.rs index afcfef1..e880739 100644 --- a/src/encoding/headers.rs +++ b/src/encoding/headers.rs @@ -166,7 +166,17 @@ impl Display for Contact { } impl FromStr for Contact { type Err = anyhow::Error; - fn from_str(_s: &str) -> Result { - todo!() + fn from_str(s: &str) -> Result { + let (display_name, rest) = s.split_once("<").ok_or(anyhow!("malformed contact"))?; + let (uri, params) = rest.split_once(">;").ok_or(anyhow!("malformed contact"))?; + Ok(Self { + display_name: if display_name.is_empty() { + None + } else { + Some(display_name.to_string()) + }, + params: params.to_string(), + uri: Uri::from_str(uri)?, + }) } } -- cgit v1.2.3-70-g09d2