use thiserror::Error;
#[derive(Clone, Debug)]
pub enum JsonOrText {
Json(serde_json::Value),
Text(String),
}
#[derive(Debug, Error)]
pub enum WorkOsError<E> {
#[error("operational error")]
Operation(E),
#[error("unauthorized")]
Unauthorized,
#[error("unknown error")]
Unknown {
status: reqwest::StatusCode,
body: JsonOrText,
},
#[error("URL parse error")]
UrlParseError(#[from] url::ParseError),
#[error("IP addres parse error")]
IpAddrParseError(#[from] std::net::AddrParseError),
#[error("request error")]
RequestError(#[from] reqwest::Error),
}
pub type WorkOsResult<T, E> = Result<T, WorkOsError<E>>;