use std::{fmt, io};
#[derive(Debug)]
pub enum AriosError {
InvalidUrl,
InvalidRequest(&'static str),
InvalidResponse(&'static str),
HttpStatus(u16, String),
Io(io::Error),
}
pub type AriosResult<T> = Result<T, AriosError>;
impl fmt::Display for AriosError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
AriosError::InvalidUrl => write!(f, "invalid URL"),
AriosError::InvalidRequest(message) => write!(f, "invalid request: {message}"),
AriosError::InvalidResponse(message) => write!(f, "invalid response: {message}"),
AriosError::HttpStatus(code, status) => write!(f, "HTTP error {code}: {status}"),
AriosError::Io(error) => write!(f, "I/O error: {error}"),
}
}
}
impl std::error::Error for AriosError {}
impl From<io::Error> for AriosError {
fn from(error: io::Error) -> Self {
AriosError::Io(error)
}
}