1use fluent_uri::error;
2use rustls_pki_types::InvalidDnsNameError;
3use std::{io, num::ParseIntError, string::FromUtf8Error};
4use strum;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum HandshakeFailureError {
9 #[error("Invalid Handshake Header: {0}")]
10 HeaderError(String),
11
12 #[error("Handshake Validation Failed")]
13 ValidationError,
14}
15
16#[derive(Error, Debug)]
17pub enum URIError {
18 #[error("Incomplete URI: {0}")]
19 IncompleteURIError(String),
20
21 #[error("Malformed URI {0}")]
22 MalformedURIError(String),
23
24 #[error("URI couldnt be resolved")]
25 ResolveError(#[from] error::ResolveError),
26
27 #[error("DNS Error: {0}")]
28 DNSError(#[from] InvalidDnsNameError),
29
30 #[error("Bad Port Error: {0}")]
31 BadPortError(#[from] ParseIntError),
32}
33
34#[derive(Error, Debug)]
35pub enum ConnectionError {
36 #[error("Read Error: {0}")]
37 ReadError(String),
38
39 #[error("Write Error: {0}")]
40 WriteError(String),
41
42 #[error("Bad Connector: {0}")]
43 ConnectorError(String),
44}
45
46#[derive(Error, Debug)]
47pub enum ParseError {
48 #[error("Error converting payload to UTF-8: {0}")]
49 Utf8Error(#[from] FromUtf8Error),
50
51 #[error("Frame Error: {0}")]
52 FrameError(String),
53
54 #[error("Invalid Event Error: {source} for `{error_event}`")]
55 InvalidEventError {
56 error_event: String,
57
58 #[source]
59 source: strum::ParseError,
60 },
61}
62
63#[derive(Error, Debug)]
64pub enum WebSocketError {
65 #[error("[Handshake Failure] {0}")]
66 Handshake(#[from] HandshakeFailureError),
67
68 #[error("[URI Error] {0}")]
69 Uri(#[from] URIError),
70
71 #[error("[Connection Error] {0}")]
72 Stream(#[from] ConnectionError),
73
74 #[error("[Parse Error] {0}")]
75 Parse(#[from] ParseError),
76
77 #[error("[IO Error] {0}")]
78 Io(#[from] io::Error),
79}