1use http::Error as HttpError;
2use http::header::InvalidHeaderValue;
3use monoio_transports::{FromUriError, TransportError as MonoioTransportError};
4#[cfg(not(feature = "hyper-tls"))]
5use monoio_http::common::error::HttpError as MonoioHttpError;
6#[cfg(any(feature = "hyper", feature = "pool-hyper", feature = "hyper-tls"))]
7use monoio_transports::{
8 connectors::pollio::PollConnectError,
9 http::hyper::HyperError
10};
11#[cfg(feature = "hyper-tls")]
12use monoio_transports::http::hyper::TlsError;
13use serde_json::Error as SerdeError;
14use thiserror::{Error as ThisError, Error};
15
16#[cfg(not(feature = "hyper-tls"))]
17pub type Result<T> = std::result::Result<T, Error>;
18
19#[derive(ThisError, Debug)]
20pub enum Error {
21 #[error("{0:?}")]
22 InvalidHeaderValue(InvalidHeaderValue),
23 #[error("error building http request: {0:?}")]
24 HttpRequestBuilder(HttpError),
25 #[error("http request version and http protocol does not match: {0:?}")]
26 HttpVersionMismatch(String),
27 #[error("error making pool key from uri: {0:?}")]
28 UriKeyError(FromUriError),
29 #[error("{0:?}")]
30 TransportError(TransportError),
31 #[cfg(not(feature = "hyper-tls"))]
32 #[error("{0:?}")]
33 HttpResponseError(MonoioHttpError),
34 #[cfg(any(feature = "hyper", feature = "pool-hyper", feature = "hyper-tls"))]
35 #[error("{0:?}")]
36 HyperResponseError(hyper::Error),
37 #[error("{0:?}")]
38 BytesError(String),
39 #[error("serde body deserialize error: {0:?}")]
40 SerdeDeserializeError(SerdeError),
41 #[error("Hyper Connector was not initialized")]
42 ConnectorNotInitialized,
43}
44
45#[derive(Debug, Error)]
46pub enum TransportError {
47 #[error("http connector error: {0:?}")]
48 HttpConnectorError(MonoioTransportError),
49 #[cfg(any(feature = "hyper", feature = "pool-hyper", feature = "hyper-tls"))]
50 #[error("hyper poll error: {0:?}")]
51 HyperPollError(HyperError<PollConnectError<std::io::Error>>),
52 #[cfg(feature = "hyper-tls")]
53 #[error("Hyper TLS stream error: {0:?}")]
54 TlsStreamError(HyperError<TlsError>),
55}
56
57impl From<TransportError> for Error {
58 fn from(err: TransportError) -> Self {
59 Error::TransportError(err)
60 }
61}