1#[derive(thiserror::Error, Debug)]
5pub enum WebsocketError {
6 #[error("Invalid WebSocket request URL configured")]
8 InvalidRequest,
9
10 #[error("WebSocket connection failed: {0}")]
12 ConnectionError(#[from] tokio_tungstenite::tungstenite::Error),
13
14 #[error("Invalid WebSocket URL: {0}")]
16 UrlError(#[from] UrlError),
17
18 #[error("HTTP error: {0}")]
20 HttpError(#[from] http::Error),
21
22 #[error("Invalid WebSocket header value: {0}")]
24 InvalidHeader(#[from] http::header::InvalidHeaderValue),
25
26 #[error("JSON error: {0}")]
28 JsonError(#[from] serde_json::Error),
29
30 #[error("TLS error: {0}")]
32 TLSError(String),
33
34 #[error("The WebSocket connection was unauthorized")]
36 Unauthorized,
37
38 #[error("WebSocket is already connected")]
40 AlreadyConnected,
41
42 #[error("WebSocket is not connected")]
44 NotConnected,
45
46 #[error("Failed to send message to WebSocket")]
48 SendError,
49
50 #[error("Internal channel communication error")]
52 ChannelError,
53
54 #[error("Operation timed out")]
56 Timeout,
57}
58
59#[derive(thiserror::Error, Debug)]
61pub enum UrlError {
62 #[error(transparent)]
64 Http(#[from] http::uri::InvalidUri),
65
66 #[error(transparent)]
68 Url(#[from] url::ParseError),
69}
70
71pub type WebsocketResult<T> = Result<T, WebsocketError>;