mixin_sdk_rs/
error.rs

1use crate::auth::AuthError;
2use crate::request::ApiError;
3use http::method::InvalidMethod;
4use reqwest::header::InvalidHeaderValue;
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum Error {
9    #[error("Request error: {0}")]
10    Request(reqwest::Error),
11    #[error("JSON error: {0}")]
12    Json(serde_json::Error),
13    #[error("Authentication error: {0}")]
14    Auth(AuthError),
15    #[error("API error: {0}")]
16    Api(ApiError),
17    #[error("Input error: {0}")]
18    Input(String),
19    #[error("Data not found in API response: {0}")]
20    DataNotFound(String),
21    #[error("Server error: {0}")]
22    Server(String),
23}
24
25impl From<reqwest::Error> for Error {
26    fn from(err: reqwest::Error) -> Self {
27        Error::Request(err)
28    }
29}
30
31impl From<serde_json::Error> for Error {
32    fn from(err: serde_json::Error) -> Self {
33        Error::Json(err)
34    }
35}
36
37impl From<AuthError> for Error {
38    fn from(err: AuthError) -> Self {
39        Error::Auth(err)
40    }
41}
42
43impl From<ApiError> for Error {
44    fn from(err: ApiError) -> Self {
45        Error::Api(err)
46    }
47}
48
49impl From<InvalidHeaderValue> for Error {
50    fn from(err: InvalidHeaderValue) -> Self {
51        Error::Server(err.to_string())
52    }
53}
54
55impl From<InvalidMethod> for Error {
56    fn from(err: InvalidMethod) -> Self {
57        Error::Server(err.to_string())
58    }
59}