use url::Url;
use super::PjParseError;
use crate::uri::error::InternalPjParseError;
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct PjParam(Url);
impl PjParam {
pub(super) fn parse(url: Url) -> Result<Self, PjParseError> {
if url.scheme() == "https"
|| url.scheme() == "http" && url.domain().unwrap_or_default().ends_with(".onion")
{
Ok(Self(url))
} else {
Err(InternalPjParseError::UnsecureEndpoint.into())
}
}
pub(crate) fn endpoint(&self) -> Url { self.0.clone() }
}
impl std::fmt::Display for PjParam {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}