hightower_client/
error.rs1use std::error::Error;
2use std::fmt;
3
4#[derive(Debug)]
5pub enum ClientError {
6 Configuration(String),
7 Request(reqwest::Error),
8 GatewayError { status: u16, message: String },
9 InvalidResponse(String),
10 NetworkDiscovery(String),
11 Transport(String),
12 Storage(String),
13}
14
15impl fmt::Display for ClientError {
16 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17 match self {
18 ClientError::Configuration(msg) => write!(f, "configuration error: {}", msg),
19 ClientError::Request(err) => write!(f, "request error: {}", err),
20 ClientError::GatewayError { status, message } => {
21 write!(f, "gateway error (status {}): {}", status, message)
22 }
23 ClientError::InvalidResponse(msg) => write!(f, "invalid response: {}", msg),
24 ClientError::NetworkDiscovery(msg) => write!(f, "network discovery failed: {}", msg),
25 ClientError::Transport(msg) => write!(f, "transport error: {}", msg),
26 ClientError::Storage(msg) => write!(f, "storage error: {}", msg),
27 }
28 }
29}
30
31impl Error for ClientError {
32 fn source(&self) -> Option<&(dyn Error + 'static)> {
33 match self {
34 ClientError::Request(err) => Some(err),
35 _ => None,
36 }
37 }
38}
39
40impl From<reqwest::Error> for ClientError {
41 fn from(err: reqwest::Error) -> Self {
42 ClientError::Request(err)
43 }
44}