1use std::fmt;
2
3#[derive(Debug)]
4pub enum Error {
5 RequestError(reqwest::Error),
6 ApiError {
7 status: u16,
8 message: String,
9 },
10 SerdeError(serde_json::Error),
11 Timeout,
12 ConfigError(String),
13}
14
15impl fmt::Display for Error {
16 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17 match self {
18 Error::RequestError(e) => write!(f, "Request error: {}", e),
19 Error::ApiError { status, message } => {
20 write!(f, "API error ({}): {}", status, message)
21 }
22 Error::SerdeError(e) => write!(f, "Serialization error: {}", e),
23 Error::Timeout => write!(f, "Request timed out"),
24 Error::ConfigError(e) => write!(f, "Config error: {}", e),
25 }
26 }
27}
28
29impl std::error::Error for Error {}
30
31impl From<reqwest::Error> for Error {
32 fn from(err: reqwest::Error) -> Self {
33 Error::RequestError(err)
34 }
35}
36
37impl From<serde_json::Error> for Error {
38 fn from(err: serde_json::Error) -> Self {
39 Error::SerdeError(err)
40 }
41}