firebase_client/
error.rs

1use std::{error, fmt};
2
3use hyper::{http, StatusCode};
4
5#[derive(Debug)]
6pub enum FirebaseClientError {
7    InvalidUriError(http::uri::InvalidUri),
8    SerializeNotificationError(serde_json::Error),
9    BuildRequestError(hyper::http::Error),
10    HttpRequestError {
11        status_code: StatusCode,
12        body: String,
13    },
14    ClientError(hyper::Error),
15    ReadBodyError(hyper::Error),
16}
17
18impl From<http::uri::InvalidUri> for FirebaseClientError {
19    fn from(err: http::uri::InvalidUri) -> Self {
20        FirebaseClientError::InvalidUriError(err)
21    }
22}
23
24impl From<hyper::http::Error> for FirebaseClientError {
25    fn from(err: hyper::http::Error) -> Self {
26        FirebaseClientError::BuildRequestError(err)
27    }
28}
29
30impl From<hyper::Error> for FirebaseClientError {
31    fn from(err: hyper::Error) -> Self {
32        FirebaseClientError::ClientError(err)
33    }
34}
35
36impl From<serde_json::Error> for FirebaseClientError {
37    fn from(err: serde_json::Error) -> Self {
38        FirebaseClientError::SerializeNotificationError(err)
39    }
40}
41
42impl fmt::Display for FirebaseClientError {
43    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44        match self {
45            FirebaseClientError::InvalidUriError(i) => write!(f, "InvalidUriError: {}", i),
46            FirebaseClientError::SerializeNotificationError(err) => {
47                write!(f, "SerializeNotificationError: {}", err)
48            }
49            FirebaseClientError::BuildRequestError(err) => write!(f, "BuildRequestError: {}", err),
50            FirebaseClientError::HttpRequestError { status_code, body } => {
51                write!(f, "HttpRequestError status:{} body:{}", status_code, body)
52            }
53            FirebaseClientError::ClientError(err) => write!(f, "ClientError: {}", err),
54            FirebaseClientError::ReadBodyError(err) => write!(f, "ReadBodyError: {}", err),
55        }
56    }
57}
58
59impl error::Error for FirebaseClientError {}