use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum YcbError {
#[error("network error: {0}")]
Network(#[from] reqwest::Error),
#[error("http {status} for {url}")]
HttpStatus {
status: u16,
url: String,
},
#[error("extraction failed for {path}: {source}")]
Extraction {
path: String,
#[source]
source: std::io::Error,
},
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("invalid response: {0}")]
InvalidResponse(String),
#[error("unsafe archive entry: {0}")]
UnsafeArchive(String),
}
pub type Result<T> = std::result::Result<T, YcbError>;
impl YcbError {
pub(crate) fn extraction(path: impl Into<String>, source: std::io::Error) -> Self {
YcbError::Extraction {
path: path.into(),
source,
}
}
}