aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/uri.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/uri.rs')
-rw-r--r--src/encoding/uri.rs55
1 files changed, 0 insertions, 55 deletions
diff --git a/src/encoding/uri.rs b/src/encoding/uri.rs
deleted file mode 100644
index b1a1282..0000000
--- a/src/encoding/uri.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-use anyhow::anyhow;
-use std::{fmt::Display, str::FromStr};
-
-#[derive(Debug, Clone)]
-pub struct Uri {
- pub protocol: String,
- pub localpart: Option<String>,
- pub addr: String,
- pub params: String,
-}
-
-impl Display for Uri {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- let Self {
- protocol,
- localpart,
- addr,
- params,
- } = self;
- write!(
- f,
- "{protocol}:{}{addr}{}",
- if let Some(localpart) = localpart {
- format!("{localpart}@")
- } else {
- "".to_string()
- },
- if params.is_empty() {
- "".to_string()
- } else {
- format!(";{params}")
- }
- )?;
- Ok(())
- }
-}
-impl FromStr for Uri {
- type Err = anyhow::Error;
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- let (pr, s) = s.split_once(":").ok_or(anyhow!("protocol sep"))?;
- let (lp, s) = s.split_once("@").unwrap_or(("", s));
- let (addr, params) = s.split_once(";").unwrap_or((s, ""));
-
- Ok(Self {
- addr: addr.to_owned(),
- localpart: if lp.is_empty() {
- None
- } else {
- Some(lp.to_string())
- },
- params: params.to_string(),
- protocol: pr.to_string(),
- })
- }
-}