1#[cfg(feature = "reqwest")]
2use reqwest;
3use std::error;
4use std::fmt::{Display, Formatter, Result as FmtResult};
5use std::io;
6use url;
7
8#[derive(Debug)]
9pub enum Error {
10 #[cfg(feature = "reqwest")]
11 NetworkError(reqwest::Error),
12 UrlParseError(url::ParseError),
13 Unexpected,
14 IOError(io::Error),
15}
16
17impl Display for Error {
18 fn fmt(&self, f: &mut Formatter) -> FmtResult {
19 match *self {
20 #[cfg(feature = "reqwest")]
21 Error::NetworkError(ref e) => write!(f, "NetworkError: {}", e),
22 Error::UrlParseError(ref e) => write!(f, "UrlParseError: {}", e),
23 Error::Unexpected => write!(f, "UnexpectedError"),
24 Error::IOError(ref e) => write!(f, "InputOutputError: {}", e),
25 }
26 }
27}
28
29impl From<url::ParseError> for Error {
30 fn from(err: url::ParseError) -> Error {
31 Error::UrlParseError(err)
32 }
33}
34
35impl From<io::Error> for Error {
36 fn from(err: io::Error) -> Error {
37 Error::IOError(err)
38 }
39}
40
41#[cfg(feature = "reqwest")]
42impl From<reqwest::Error> for Error {
43 fn from(err: reqwest::Error) -> Error {
44 Error::NetworkError(err)
45 }
46}
47
48impl error::Error for Error {}