use crate::response;
#[derive(Debug)]
pub enum Error {
Parsing(String),
BadArgument(String),
Request(String),
InvalidResponse(response::QueryError),
InvalidPage(response::QueryError),
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::Parsing(msg) => write!(f, "ParsingError: {msg}"),
Error::BadArgument(msg) => write!(f, "BadArgument: {msg}"),
Error::Request(msg) => write!(f, "RequestError: {msg}"),
Error::InvalidResponse(e) => {
write!(f, "ResponseError with {}: {}", e.code, e.message)
}
Error::InvalidPage(e) => write!(f, "PageError with {}: {}", e.code, e.message),
}
}
}
impl std::error::Error for Error {}
pub type Result<T, E = Error> = core::result::Result<T, E>;
impl From<url::ParseError> for Error {
fn from(e: url::ParseError) -> Self {
Error::Parsing(e.to_string())
}
}
impl From<std::num::ParseIntError> for Error {
fn from(e: std::num::ParseIntError) -> Self {
Error::Parsing(e.to_string())
}
}
impl From<reqwest::header::InvalidHeaderValue> for Error {
fn from(e: reqwest::header::InvalidHeaderValue) -> Self {
Error::Parsing(e.to_string())
}
}
impl From<serde_json::Error> for Error {
fn from(e: serde_json::Error) -> Self {
Error::Parsing(e.to_string())
}
}
impl From<reqwest::Error> for Error {
fn from(e: reqwest::Error) -> Self {
Error::Request(e.to_string())
}
}