monoio_netreq/
error.rs

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}