openlimits_exchange/
errors.rs

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