1use std::fmt::Display;
2
3use quick_xml::DeError;
4
5pub type Result<T> = std::result::Result<T, Error>;
6#[derive(Debug)]
7pub enum Error {
8 IO(std::io::Error),
9 Reqwest(reqwest::Error),
10 Http(reqwest::StatusCode),
11 XML(DeError),
12 #[cfg(feature = "json-api")]
13 JSON(serde_json::Error),
14 Other(String),
15}
16
17impl Display for Error {
18 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
19 match self {
20 Error::IO(e) => write!(f, "IO error: {}", e),
21 Error::Reqwest(e) => write!(f, "Reqwest error: {}", e),
22 Error::Http(status) => write!(f, "HTTP status: {}", status),
23 Error::XML(e) => write!(f, "Deserialize error: {}", e),
24 #[cfg(feature = "json-api")]
25 Error::JSON(e) => write!(f, "JSON error: {}", e),
26 Error::Other(e) => write!(f, "Other error: {}", e),
27 }
28 }
29}
30
31impl From<reqwest::Error> for Error {
32 fn from(e: reqwest::Error) -> Self {
33 Error::Reqwest(e)
34 }
35}
36
37impl From<DeError> for Error {
38 fn from(e: DeError) -> Self {
39 Error::XML(e)
40 }
41}
42
43impl From<serde_json::Error> for Error {
44 fn from(e: serde_json::Error) -> Self {
45 Error::JSON(e)
46 }
47}