1use reqwest::StatusCode;
2
3#[derive(Debug, thiserror::Error)]
5pub enum Error {
6 #[error("HTTP error: {0}")]
8 Http(#[from] reqwest::Error),
9
10 #[error("unable to serialise/deserialise struct")]
12 Serde(#[from] serde_json::Error),
13
14 #[error("Access token has expired!")]
16 AuthExpired,
17
18 #[error("Client error: {0}")]
20 Client(StatusCode),
21
22 #[error("Server error: {0}")]
24 Server(StatusCode),
25}
26
27impl From<StatusCode> for Error {
28 fn from(status_code: StatusCode) -> Self {
29 if status_code == StatusCode::UNAUTHORIZED {
30 return Self::AuthExpired;
31 } else if status_code.is_client_error() {
32 return Self::Client(status_code);
33 } else if status_code.is_server_error() {
34 return Self::Server(status_code);
35 }
36 unimplemented!()
37 }
38}