barter_integration/
error.rs1use crate::subscription::SubscriptionId;
2use prost::DecodeError;
3use reqwest::Error;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8pub enum SocketError {
9 #[error("Sink error")]
10 Sink,
11
12 #[error("Deserialising JSON error: {error} for payload: {payload}")]
13 Deserialise {
14 error: serde_json::Error,
15 payload: String,
16 },
17
18 #[error("Deserialising JSON error: {error} for binary payload: {payload:?}")]
19 DeserialiseBinary {
20 error: serde_json::Error,
21 payload: Vec<u8>,
22 },
23
24 #[error("Deserialising protobuf error: {error} for binary payload: {payload:?}")]
25 DeserialiseProtobuf {
26 error: DecodeError,
27 payload: Vec<u8>,
28 },
29
30 #[error("Serialising JSON error: {0}")]
31 Serialise(serde_json::Error),
32
33 #[error("SerDe Query String serialisation error: {0}")]
34 QueryParams(#[from] serde_qs::Error),
35
36 #[error("SerDe url encoding serialisation error: {0}")]
37 UrlEncoded(#[from] serde_urlencoded::ser::Error),
38
39 #[error("error parsing Url: {0}")]
40 UrlParse(#[from] url::ParseError),
41
42 #[error("error subscribing to resources over the socket: {0}")]
43 Subscribe(String),
44
45 #[error("ExchangeStream terminated with closing frame: {0}")]
46 Terminated(String),
47
48 #[error("{entity} does not support: {item}")]
49 Unsupported { entity: String, item: String },
50
51 #[error("WebSocket error: {0}")]
52 WebSocket(Box<tokio_tungstenite::tungstenite::Error>),
53
54 #[error("HTTP error: {0}")]
55 Http(reqwest::Error),
56
57 #[error("HTTP request timed out")]
58 HttpTimeout(reqwest::Error),
59
60 #[error("HTTP response (status={0}) error: {1}")]
62 HttpResponse(reqwest::StatusCode, String),
63
64 #[error("consumed unidentifiable message: {0}")]
65 Unidentifiable(SubscriptionId),
66
67 #[error("consumed error message from execution: {0}")]
68 Exchange(String),
69}
70
71impl From<reqwest::Error> for SocketError {
72 fn from(error: Error) -> Self {
73 match error {
74 error if error.is_timeout() => SocketError::HttpTimeout(error),
75 error => SocketError::Http(error),
76 }
77 }
78}