simple_hyper_client/
error.rs1use derive_more::{IsVariant, TryUnwrap, Unwrap};
8use hyper::Method;
9use std::error;
10
11pub type HyperClientError = hyper_util::client::legacy::Error;
12
13#[derive(Debug, thiserror::Error, IsVariant, TryUnwrap, Unwrap)]
14#[try_unwrap(ref)]
15#[unwrap(ref)]
16pub enum Error {
17 #[error(transparent)]
18 Http(#[from] http::Error),
19
20 #[error("{0}{source}", source = render_source_error(.0))]
21 Client(#[from] HyperClientError),
22
23 #[error("{0} requests are not allowed to have a body")]
24 BodyNotAllowed(Method),
25}
26
27fn render_source_error(err: &HyperClientError) -> String {
28 if let Some(err) = error::Error::source(err) {
29 format!(": {err}")
30 } else {
31 Default::default()
32 }
33}