From cbc111f90b5facc1f2a9dd79ced216279d6260af Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 19 Nov 2024 02:08:52 +0100 Subject: move files + rtp parser --- src/encoding/response.rs | 53 ------------------------------------------------ 1 file changed, 53 deletions(-) delete mode 100644 src/encoding/response.rs (limited to 'src/encoding/response.rs') diff --git a/src/encoding/response.rs b/src/encoding/response.rs deleted file mode 100644 index 0b7996c..0000000 --- a/src/encoding/response.rs +++ /dev/null @@ -1,53 +0,0 @@ -use super::{headermap::HeaderMap, status::Status}; -use anyhow::{anyhow, bail, Context}; -use std::{fmt::Display, str::FromStr}; - -#[derive(Debug, Clone)] -pub struct Response { - pub status: Status, - pub headers: HeaderMap, - pub body: String, -} - -impl FromStr for Response { - type Err = anyhow::Error; - fn from_str(s: &str) -> Result { - let mut lines = s.lines(); - let statusline = lines.next().ok_or(anyhow!("status line missing"))?; - let (sipver, rest) = statusline - .split_once(" ") - .ok_or(anyhow!("status line malformed"))?; - let (code, _status_str) = rest - .split_once(" ") - .ok_or(anyhow!("status line malformed"))?; - let code = u16::from_str(code).context("status code")?; - - let Some(ver) = sipver.strip_prefix("SIP/") else { - bail!("sip version malformed"); - }; - if ver != "2.0" { - bail!("sip version {ver:?} is not supported"); - } - - let headers = HeaderMap::parse(&mut lines)?; - - let status = Status::from_code(code); - Ok(Self { - status, - headers, - body: String::new(), - }) - } -} -impl Display for Response { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let Self { - status, - headers, - body, - } = self; - write!(f, "SIP/2.0 {} {status:?}\r\n", status.to_code())?; - write!(f, "{headers}\r\n{body}")?; - Ok(()) - } -} -- cgit v1.2.3-70-g09d2