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}
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}