pub use url::{ParseError, Url};
pub trait ResolveUrl {
fn resolve_url(&self, path: &str) -> Result<Url, ParseError>;
}
#[derive(Clone, Debug)]
pub struct UrlResolver {
base: Url,
}
impl UrlResolver {
pub fn new(base: Url) -> Self {
UrlResolver { base }
}
}
impl ResolveUrl for UrlResolver {
fn resolve_url(&self, path: &str) -> Result<Url, ParseError> {
self.base.join(path)
}
}
#[derive(Clone, Copy, Debug, Default)]
pub struct InvalidUrlResolver;
impl ResolveUrl for InvalidUrlResolver {
fn resolve_url(&self, _: &str) -> Result<Url, ParseError> {
Err(ParseError::EmptyHost)
}
}