1use reqwest::StatusCode;
2use serde::{Deserialize, Serialize};
3use thiserror::Error;
4
5#[derive(Error, Debug)]
6pub enum Error {
7 #[error("Timeout")]
8 Timeout,
9
10 #[error("Other {0}")]
11 Other(String, StatusCode),
12
13 #[error("OAuth {0:?}, {1}")]
14 OAuth(OAuthError, StatusCode),
15
16 #[error("ApiError {0:?}, {1}")]
17 Api(crate::responses::error::Error, StatusCode),
18
19 #[error("reqwest {0}")]
20 Reqwest(#[from] reqwest::Error),
21
22 #[error("serde json {0}")]
23 Json(#[from] serde_json::Error),
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct OAuthError {
28 pub error: String,
29 pub error_description: String,
30 pub log_id: String,
31}