1use reqwest::header::InvalidHeaderName as HttpInvalidHeaderNameError;
2use reqwest::header::InvalidHeaderValue as HttpInvalidHeaderValueError;
3use quick_xml::Error as QxmlError;
4use reqwest::Error as ReqwestError;
5use std::error::Error as StdError;
6use std::io::Error as IoError;
7use std::string::FromUtf8Error;
8
9#[derive(Debug, Display)]
10pub enum Error {
11 Object(ObjectError),
12 Io(IoError),
13 String(FromUtf8Error),
14 Reqwest(ReqwestError),
15 Qxml(QxmlError),
16 Http(HttpError),
17}
18
19#[derive(Debug, Display)]
20pub enum HttpError {
21 HttpInvalidHeaderValue(HttpInvalidHeaderValueError),
22 HttpInvalidHeaderName(HttpInvalidHeaderNameError),
23}
24
25impl From<QxmlError> for Error {
26 fn from(e: QxmlError) -> Error {
27 Error::Qxml(e)
28 }
29}
30
31impl From<IoError> for Error {
32 fn from(e: IoError) -> Error {
33 Error::Io(e)
34 }
35}
36
37impl From<ReqwestError> for Error {
38 fn from(e: ReqwestError) -> Error {
39 Error::Reqwest(e)
40 }
41}
42
43impl From<HttpInvalidHeaderValueError> for Error {
44 fn from(e: HttpInvalidHeaderValueError) -> Error {
45 Error::Http(HttpError::HttpInvalidHeaderValue(e))
46 }
47}
48
49impl From<HttpInvalidHeaderNameError> for Error {
50 fn from(e: HttpInvalidHeaderNameError) -> Error {
51 Error::Http(HttpError::HttpInvalidHeaderName(e))
52 }
53}
54
55impl From<FromUtf8Error> for Error {
56 fn from(e: FromUtf8Error) -> Error {
57 Error::String(e)
58 }
59}
60
61#[derive(Debug, Display)]
62pub enum ObjectError {
63 #[display(fmt = "PUT ERROR: {}", msg)]
64 PutError { msg: String },
65 #[display(fmt = "GET ERROR: {}", msg)]
66 GetError { msg: String },
67 #[display(fmt = "COPY ERROR: {}", msg)]
68 CopyError { msg: String },
69 #[display(fmt = "DELETE ERROR: {}", msg)]
70 DeleteError { msg: String },
71}
72
73impl StdError for Error {}