hightower_client/
error.rs

1use 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}
13
14impl fmt::Display for ClientError {
15    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16        match self {
17            ClientError::Configuration(msg) => write!(f, "configuration error: {}", msg),
18            ClientError::Request(err) => write!(f, "request error: {}", err),
19            ClientError::GatewayError { status, message } => {
20                write!(f, "gateway error (status {}): {}", status, message)
21            }
22            ClientError::InvalidResponse(msg) => write!(f, "invalid response: {}", msg),
23            ClientError::NetworkDiscovery(msg) => write!(f, "network discovery failed: {}", msg),
24            ClientError::Transport(msg) => write!(f, "transport error: {}", msg),
25        }
26    }
27}
28
29impl Error for ClientError {
30    fn source(&self) -> Option<&(dyn Error + 'static)> {
31        match self {
32            ClientError::Request(err) => Some(err),
33            _ => None,
34        }
35    }
36}
37
38impl From<reqwest::Error> for ClientError {
39    fn from(err: reqwest::Error) -> Self {
40        ClientError::Request(err)
41    }
42}