1use std::fmt;
2
3#[derive(Debug)]
4pub enum Error {
5 InvalidInputError,
6 IOError(std::io::Error),
7 NotFoundDomain,
8 NotFoundStream,
9 SerdeJsonError(serde_json::Error),
10 SocketModeOpenConnectionError,
11 SurfError(surf::Error),
12 UrlParseError(url::ParseError),
13 WebSocketError(async_tungstenite::tungstenite::Error),
14}
15
16impl From<std::io::Error> for Error {
17 fn from(err: std::io::Error) -> Error {
18 Error::IOError(err)
19 }
20}
21
22impl From<serde_json::Error> for Error {
23 fn from(err: serde_json::Error) -> Error {
24 Error::SerdeJsonError(err)
25 }
26}
27
28impl From<surf::Error> for Error {
29 fn from(err: surf::Error) -> Error {
30 Error::SurfError(err)
31 }
32}
33
34impl From<url::ParseError> for Error {
35 fn from(err: url::ParseError) -> Error {
36 Error::UrlParseError(err)
37 }
38}
39
40impl From<async_tungstenite::tungstenite::Error> for Error {
41 fn from(err: async_tungstenite::tungstenite::error::Error) -> Error {
42 Error::WebSocketError(err)
43 }
44}
45
46impl fmt::Display for Error {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 match *self {
49 Error::InvalidInputError => write!(f, "Invalid Input Error"),
50 Error::IOError(ref e) => write!(f, "IO Error: {}", e),
51 Error::NotFoundDomain => write!(f, "NotFound Domain Error"),
52 Error::NotFoundStream => write!(f, "NotFound Stream Error"),
53 Error::SerdeJsonError(ref e) => write!(f, "Serde Json Error: {}", e),
54 Error::SocketModeOpenConnectionError => write!(f, "SocketMode OpenConnection Error"),
55 Error::SurfError(ref e) => write!(f, "Surf Error: {}", e),
56 Error::UrlParseError(ref e) => write!(f, "Url Parse Error: {}", e),
57 Error::WebSocketError(ref e) => write!(f, "WebSocket Error: {:?}", e),
58 }
59 }
60}