lisk_api_rust_client/
error.rs1use 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}