binary_option_tools/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 binary_options_tools_core::error::BinaryOptionsToolsError;
7use thiserror::Error;
8#[derive(Error, Debug)]
12pub enum PocketOptionError {
13 #[error("BinaryOptionsToolsError, {0}")]
14 BinaryOptionsToolsError(#[from] BinaryOptionsToolsError),
15 #[error("Failed to parse SSID: {0}")]
16 SsidParsingError(String),
17 #[error("Failed to parse data: {0}")]
18 GeneralParsingError(String),
19 #[error("TLS Certificate error, {0}")]
22 TLSError(#[from] native_tls::Error),
23 #[error("Failed to connect to websocket server: {0}")]
26 WebsocketRecievingConnectionError(String),
27 #[error("Websocket connection was closed by the server, {0}")]
28 WebsocketConnectionClosed(String),
29 #[error("Failed to connect to websocket server after multiple attempts, {0}")]
30 WebsocketMultipleAttemptsConnectionError(String),
31 #[error("Failed to parse recieved data to Message: {0}")]
32 WebSocketMessageParsingError(#[from] serde_json::Error),
33 #[error("Failed to process recieved Message: {0}")]
34 WebSocketMessageProcessingError(#[from] anyhow::Error),
35 #[error("Failed to convert bytes to string, {0}")]
36 WebSocketMessageByteSerializationError(#[from] FromUtf8Error),
37 #[error("Failed to send message to websocket sender, {0}")]
40 ThreadMessageSendingErrorMPCS(#[from] async_channel::SendError<WebSocketMessage>),
41 #[error("Failed to recieve message from separate thread, {0}")]
42 OneShotRecieverError(#[from] tokio::sync::oneshot::error::RecvError),
43 #[error("Failed to send message to websocket sender, {0}")]
44 ThreadMessageSendingError(#[from] WebSocketMessage),
45 #[error("Failed to make request, {0}")]
46 RequestError(#[from] reqwest::Error),
47 #[error("Unexpected error, recieved incorrect WebSocketMessage type, recieved {0}")]
48 UnexpectedIncorrectWebSocketMessage(#[from] MessageInfo),
49 #[error("If you are having this error please contact the developpers, {0}")]
50 UnreachableError(String),
51 #[error("Unallowed operation, {0}")]
52 Unallowed(String),
53 #[error("Error sending request, {0}")]
54 WebsocketMessageSendingError(#[from] PocketMessageFail),
55 #[error("Expected the data to be non-empty for type '{0}'")]
56 EmptyArrayError(String),
57}
58
59pub type PocketResult<T> = Result<T, PocketOptionError>;
60
61impl Error for WebSocketMessage {}
62impl Error for MessageInfo {}
63impl Error for PocketMessageFail {}
64
65impl From<PocketOptionError> for BinaryOptionsToolsError {
66 fn from(value: PocketOptionError) -> Self {
67 BinaryOptionsToolsError::BinaryOptionsTradingError {
68 platform: "Pocket Option".to_string(),
69 error: value.to_string(),
70 }
71 }
72}