lisk_api_rust_client/
error.rs

1use api::models::RequestError;
2use reqwest;
3use serde_json;
4use std::error;
5use std::fmt;
6
7#[derive(Debug)]
8pub enum Error {
9    Api(RequestError),
10    ReqwestHttp(reqwest::Error),
11    ReqwestUrl(reqwest::UrlError),
12    Serde(serde_json::Error),
13}
14
15impl fmt::Display for Error {
16    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17        match *self {
18            Error::Api(ref err) => write!(f, "{:?}", err),
19            Error::ReqwestHttp(ref err) => write!(f, "Reqwest Http Error: {}", err),
20            Error::ReqwestUrl(ref err) => write!(f, "Reqwest Url Error: {}", err),
21            Error::Serde(ref err) => write!(f, "Serde Error: {}", err),
22        }
23    }
24}
25
26impl error::Error for Error {
27    fn description(&self) -> &str {
28        match *self {
29            Error::Api(ref _err) => "API request error.",
30            Error::ReqwestHttp(ref err) => err.description(),
31            Error::ReqwestUrl(ref err) => err.description(),
32            Error::Serde(ref err) => err.description(),
33        }
34    }
35
36    fn cause(&self) -> Option<&error::Error> {
37        match *self {
38            Error::Api(ref _err) => None,
39            Error::ReqwestHttp(ref err) => Some(err),
40            Error::ReqwestUrl(ref err) => Some(err),
41            Error::Serde(ref err) => Some(err),
42        }
43    }
44}
45
46impl From<RequestError> for Error {
47    fn from(err: RequestError) -> Error {
48        Error::Api(err)
49    }
50}
51
52impl From<reqwest::Error> for Error {
53    fn from(err: reqwest::Error) -> Error {
54        Error::ReqwestHttp(err)
55    }
56}
57
58impl From<reqwest::UrlError> for Error {
59    fn from(err: reqwest::UrlError) -> Error {
60        Error::ReqwestUrl(err)
61    }
62}
63
64impl From<serde_json::Error> for Error {
65    fn from(err: serde_json::Error) -> Error {
66        Error::Serde(err)
67    }
68}