binance_async_api/
errors.rs1use reqwest::{StatusCode, header::HeaderMap};
2use serde::Deserialize;
3use thiserror::Error;
4use tokio_tungstenite::tungstenite;
5
6#[derive(Deserialize, Debug, Clone)]
7pub struct BinanceResponseError {
8 pub code: i64,
9 pub msg: String,
10}
11
12#[derive(Debug, Clone)]
13pub struct BinanceResponse<T> {
14 pub status_code: StatusCode,
15 pub headers: HeaderMap,
16 pub content: T,
17}
18
19#[derive(Deserialize, Debug, Clone)]
20#[serde(untagged)]
21pub(crate) enum BinanceResponseContent<T> {
22 Success(T),
23 Error(BinanceResponseError),
24}
25
26#[derive(Debug, Error)]
27pub enum BinanceError {
28 #[error("Api key is invalid")]
29 InvalidApiKey,
30 #[error("No Api key set for private api")]
31 MissingApiKey,
32 #[error("No Api secret set for private api")]
33 MissingApiSecret,
34 #[error("Error when try to connect websocket: {status_code} - {body}")]
35 StartWebsocketError {
36 status_code: StatusCode,
37 headers: HeaderMap,
38 body: String,
39 },
40 #[error("Binance returns error: {} - {}", content.code, content.msg)]
41 BinanceResponse {
42 status_code: StatusCode,
43 headers: HeaderMap,
44 content: BinanceResponseError,
45 },
46
47 #[error(transparent)]
48 WebsocketError(#[from] tungstenite::Error),
49 #[error(transparent)]
50 RequestError(#[from] reqwest::Error),
51}