bpay/
errors.rs

1//! Custom error handling for the crate specific errrors.
2use serde::Deserialize;
3use thiserror::Error;
4
5#[derive(Debug, Deserialize, Error)]
6#[serde(rename_all = "camelCase")]
7#[error("code: {code}, error_message: {error_message}")]
8pub struct BinanceContentError {
9    pub status: String,
10    pub code: i16,
11    pub error_message: String,
12}
13
14#[derive(Error, Debug)]
15pub enum Error {
16    #[error(transparent)]
17    ReqError(#[from] reqwest::Error),
18
19    #[error(transparent)]
20    Json(#[from] serde_json::Error),
21
22    #[error(transparent)]
23    InvalidHeaderError(#[from] reqwest::header::InvalidHeaderValue),
24
25    #[error(transparent)]
26    UTF8Err(#[from] std::str::Utf8Error),
27
28    #[error(transparent)]
29    StringConvertError(#[from] reqwest::header::ToStrError),
30
31    #[error(transparent)]
32    Base64DecodeError(#[from] base64::DecodeError),
33
34    #[error(transparent)]
35    RSADerError(#[from] rsa_der::Error),
36
37    #[error("{response}")]
38    BinanceError {
39        #[from]
40        response: BinanceContentError,
41    },
42
43    #[error("internal server error")]
44    InternalServerError,
45
46    #[error("service unavailable")]
47    ServiceUnavailable,
48
49    #[error("Unauthorized")]
50    Unauthorized,
51
52    #[error("{0}")]
53    Msg(String),
54}
55
56pub type Result<T> = core::result::Result<T, Error>;