use reqwest::Url;
use std::fmt;
#[derive(Debug, Clone)]
pub struct HttpUrl(pub Url);
#[derive(Debug)]
pub struct HttpUrlError(pub String);
impl fmt::Display for HttpUrlError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "HttpUrl error: {}", self.0)
}
}
impl std::error::Error for HttpUrlError {}
impl HttpUrl {
pub fn parse(url: &str) -> Result<Self, HttpUrlError> {
Url::parse(url)
.map(HttpUrl)
.map_err(|e| HttpUrlError(e.to_string()))
}
pub fn join(&self, path: &str) -> Result<Self, HttpUrlError> {
self.0
.join(path)
.map(HttpUrl)
.map_err(|e| HttpUrlError(e.to_string()))
}
}