1use 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>;