use std::io::Error as IoError;
use std::path::PathBuf;
use thiserror::Error;
use url::ParseError as UrlParseError;
use crate::quick_xml::Error as XmlError;
use super::resolver::ResolveRequest;
#[derive(Debug, Error)]
pub enum Error<E> {
#[error("IO Error: {0}")]
IoError(#[from] IoError),
#[error("XML Error: {0}")]
XmlError(#[from] XmlError),
#[error("URL Parse Error: {0}")]
UrlParseError(#[from] UrlParseError),
#[error("Unable to resolve requested resource: {0}")]
UnableToResolve(Box<ResolveRequest>),
#[error("Resolver Error: {0}")]
Resolver(E),
#[error("Invalid file path: {0}!")]
InvalidFilePath(PathBuf),
}
impl<E> Error<E> {
pub fn resolver<X: Into<E>>(error: X) -> Self {
Self::Resolver(error.into())
}
}