upcloud_sdk/
error.rs

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}