diff --git a/src/health/uri.rs b/src/health/uri.rs deleted file mode 100644 index 0157cee..0000000 --- a/src/health/uri.rs +++ /dev/null @@ -1,69 +0,0 @@ -use http::uri::InvalidUri; -use rocket::http::hyper::Uri as HyperUri; -use serde::{ - de::{Deserializer, Error, Visitor}, - ser::Serializer, - Deserialize, Serialize, -}; -use std::fmt; -use std::ops::Deref; -use std::str::FromStr; - -pub struct Uri(HyperUri); - -impl Deref for Uri { - type Target = HyperUri; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl Serialize for Uri { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&self.0.to_string()) - } -} - -struct UriVisitor; - -impl<'de> Visitor<'de> for UriVisitor { - type Value = Uri; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("an uri") - } - - fn visit_str(self, v: &str) -> Result { - match v.parse() { - Ok(uri) => Ok(Uri(uri)), - Err(e) => Err(E::custom(format!("failed to parse uri: {}", e))), - } - } -} - -impl<'de> Deserialize<'de> for Uri { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - deserializer.deserialize_string(UriVisitor) - } -} - -impl FromStr for Uri { - type Err = InvalidUri; - - fn from_str(s: &str) -> Result { - Ok(Uri(s.parse()?)) - } -} - -impl ToString for Uri { - fn to_string(&self) -> String { - self.0.to_string() - } -}