Skip to main content

binary_option_tools_core/pocketoption/
error.rs

1use std::error::Error;
2use std::string::FromUtf8Error;
3
4use super::types::order::PocketMessageFail;
5use super::{parser::message::WebSocketMessage, types::info::MessageInfo};
6use thiserror::Error;
7use tokio_tungstenite::tungstenite::Error as TungsteniteError;
8use tokio_tungstenite::tungstenite::{http, Message};
9
10#[derive(Error, Debug)]
11pub enum PocketOptionError {
12    #[error("Failed to parse SSID: {0}")]
13    SsidParsingError(String),
14    #[error("Failed to parse data: {0}")]
15    GeneralParsingError(String),
16    #[error("Error making http request: {0}")]
17    HTTPError(#[from] http::Error),
18    #[error("TLS Certificate error, {0}")]
19    TLSError(#[from] native_tls::Error),
20    #[error("Failed to connect to websocket server: {0}")]
21    WebsocketConnectionError(#[from] TungsteniteError),
22    #[error("Failed to connect to websocket server: {0}")]
23    WebsocketRecievingConnectionError(String),
24    #[error("Websocket connection was closed by the server, {0}")]
25    WebsocketConnectionClosed(String),
26    #[error("Failed to connect to websocket server after multiple attempts, {0}")]
27    WebsocketMultipleAttemptsConnectionError(String),
28    #[error("Failed to parse recieved data to Message: {0}")]
29    WebSocketMessageParsingError(#[from] serde_json::Error),
30    #[error("Failed to process recieved Message: {0}")]
31    WebSocketMessageProcessingError(#[from] anyhow::Error),
32    #[error("Failed to convert bytes to string, {0}")]
33    WebSocketMessageByteSerializationError(#[from] FromUtf8Error),
34    #[error("Failed to send message to websocket sender, {0}")]
35    MessageSendingError(#[from] async_channel::SendError<Message>),
36    #[error("Failed to send message to websocket sender, {0}")]
37    ThreadMessageSendingErrorMPCS(#[from] async_channel::SendError<WebSocketMessage>),
38    #[error("Failed to recieve message from separate thread, {0}")]
39    OneShotRecieverError(#[from] tokio::sync::oneshot::error::RecvError),
40    #[error("Failed to send message to websocket sender, {0}")]
41    ThreadMessageSendingError(#[from] WebSocketMessage),
42    #[error("Failed to make request, {0}")]
43    RequestError(#[from] reqwest::Error),
44    #[error("Unexpected error, recieved incorrect WebSocketMessage type, recieved {0}")]
45    UnexpectedIncorrectWebSocketMessage(#[from] MessageInfo),
46    #[error("If you are having this error please contact the developpers, {0}")]
47    UnreachableError(String),
48    #[error("Unallowed operation, {0}")]
49    Unallowed(String),
50    #[error("Error sending request, {0}")]
51    WebsocketMessageSendingError(#[from] PocketMessageFail),
52    #[error("Expected the data to be non-empty for type '{0}'")]
53    EmptyArrayError(String),
54}
55
56pub type PocketResult<T> = Result<T, PocketOptionError>;
57
58impl Error for WebSocketMessage {}
59impl Error for MessageInfo {}
60impl Error for PocketMessageFail {}