#[allow(clippy::module_name_repetitions)]
#[derive(Debug, Clone)]
pub enum RequestError {
ResponseCode((i32, String)),
Deserialization(String),
Other(String),
}
impl std::error::Error for RequestError {}
impl std::fmt::Display for RequestError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::ResponseCode((code, msg)) => {
write!(f, "RequestError: Status code {code} - {msg}")
}
Self::Deserialization(err) => {
write!(f, "RequestError: {err}")
}
Self::Other(err) => write!(f, "RequestError: {err}"),
}
}
}
impl From<minreq::Error> for RequestError {
fn from(err: minreq::Error) -> Self {
match err {
minreq::Error::InvalidUtf8InResponse
| minreq::Error::InvalidUtf8InBody(_)
| minreq::Error::SerdeJsonError(_) => RequestError::Deserialization(err.to_string()),
_ => RequestError::Other(err.to_string()),
}
}
}