use reqwest::header::InvalidHeaderValue;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum APIError {
#[error("Client hasn't been initialized yet (logging in + making keys).")]
ClientNotReady,
#[error("Failed to get IP address: {0}")]
FailedGetIP(String),
#[error("Failed to login: {0}")]
LoginFailed(String),
#[error("Request failed: {0}")]
RequestFailed(reqwest::Error),
#[error("Invalid header: {0}")]
InvalidHeader(InvalidHeaderValue),
#[error("Failed to parse URL: {0}")]
BadUrl(url::ParseError),
#[error("Bad parameters")]
BadParameters,
#[error("Access denied")]
AccessDenied,
#[error("Not found")]
NotFound,
#[error("Request Throttled")]
RequestThrottled,
#[error("Unknown error (500)")]
UnknownError,
#[error("In maintenance")]
InMaintenance,
#[error("Bad response: {0}")]
BadResponse(String, reqwest::StatusCode),
#[error("Invalid parameters: {0}")]
InvalidParameters(String),
#[error("Invalid tag: {0}")]
InvalidTag(String),
#[error("Event failure: {0}")]
EventFailure(String),
}
impl From<reqwest::Error> for APIError {
fn from(e: reqwest::Error) -> Self {
Self::RequestFailed(e)
}
}
impl From<url::ParseError> for APIError {
fn from(e: url::ParseError) -> Self {
Self::BadUrl(e)
}
}
impl From<InvalidHeaderValue> for APIError {
fn from(e: InvalidHeaderValue) -> Self {
Self::InvalidHeader(e)
}
}