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