binary_option_tools_core/pocketoption/
error.rs1use 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 {}