1use hyper::Error as HyperError;
2use hyper_util::client::legacy::Error as ClientError;
3use serde_json::Error as JsonError;
4
5#[derive(Debug)]
6pub enum Error {
7 Hyper(HyperError),
8 Client(ClientError),
9 Json(JsonError),
10 Unknown(String),
11}
12
13impl Error {
14 pub fn new_unknown(message: &str) -> Error {
15 Error::Unknown(message.to_owned())
16 }
17}
18
19impl std::error::Error for Error {}
20
21impl std::fmt::Display for Error {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 match *self {
24 Error::Hyper(ref err) => err.fmt(f),
25 Error::Client(ref err) => err.fmt(f),
26 Error::Json(ref err) => err.fmt(f),
27 Error::Unknown(ref err) => err.fmt(f),
28 }
29 }
30}
31
32impl From<HyperError> for Error {
33 fn from(err: HyperError) -> Error {
34 Error::Hyper(err)
35 }
36}
37
38impl From<ClientError> for Error {
39 fn from(err: ClientError) -> Error {
40 Error::Client(err)
41 }
42}
43
44impl From<JsonError> for Error {
45 fn from(err: JsonError) -> Error {
46 Error::Json(err)
47 }
48}