1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum ApiError {
5 #[error("HTTP request failed: {0}")]
6 RequestError(#[from] reqwest::Error),
7
8 #[error("API response error: {code}, message: {message}")]
9 ResponseError {
10 code: i32,
11 message: String,
12 },
13
14 #[error("Token error: {0}")]
15 TokenError(String),
16
17 #[error("Other error: {0}")]
18 Other(String),
19}
20
21impl From<serde_json::Error> for ApiError {
22 fn from(err: serde_json::Error) -> Self {
23 ApiError::Other(err.to_string())
24 }
25}
26
27pub type ApiResult<T> = Result<T, ApiError>;