openlimits_exchange/
errors.rs1use serde::{Deserialize, Serialize};
2use std::fmt;
3use thiserror::Error;
4
5#[derive(Serialize, Deserialize, Debug, Error)]
6pub struct MissingImplementationContent {
7 pub message: String,
8}
9
10impl fmt::Display for MissingImplementationContent {
11 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12 write!(f, "error message: {}", self.message)
13 }
14}
15
16#[derive(Error, Debug)]
17pub enum OpenLimitsError {
18 #[error("")]
19 Generic(Box<dyn std::error::Error + Send + Sync>),
20 #[error("")]
21 NoMarketPair,
22 #[error(transparent)]
23 MissingImplementation(#[from] MissingImplementationContent),
24 #[error("")]
25 AssetNotFound(),
26 #[error("")]
27 NoApiKeySet(),
28 #[error("")]
29 InternalServerError(),
30 #[error("")]
31 ServiceUnavailable(),
32 #[error("")]
33 Unauthorized(),
34 #[error("")]
35 SymbolNotFound(),
36 #[error("")]
37 SocketError(),
38 #[error("")]
39 WebSocketMessageNotSupported(),
40 #[error("")]
41 GetTimestampFailed(),
42 #[error(transparent)]
43 ReqError(#[from] reqwest::Error),
44 #[error(transparent)]
45 InvalidHeaderError(#[from] reqwest::header::InvalidHeaderValue),
46 #[error(transparent)]
47 InvalidPayloadSignature(#[from] serde_urlencoded::ser::Error),
48 #[error(transparent)]
49 IoError(#[from] std::io::Error),
50 #[error("")]
51 PoisonError(),
52 #[error(transparent)]
53 JsonError(#[from] serde_json::Error),
54 #[error(transparent)]
55 ParseFloatError(#[from] std::num::ParseFloatError),
56 #[error(transparent)]
57 UrlParserError(#[from] url::ParseError),
58 #[error(transparent)]
59 Tungstenite(#[from] tokio_tungstenite::tungstenite::Error),
60 #[error(transparent)]
61 TimestampError(#[from] std::time::SystemTimeError),
62 #[error("")]
63 UnkownResponse(String),
64 #[error("")]
65 NotParsableResponse(String),
66 #[error("")]
67 MissingParameter(String),
68 #[error("")]
69 InvalidParameter(String),
70}
71
72pub type Result<T> = std::result::Result<T, crate::errors::OpenLimitsError>;