use crate::maybe_send::MaybeSend;
use core::future::Future;
#[derive(Debug, thiserror::Error)]
pub enum HttpError {
#[error("Network error: {0}")]
Network(anyhow::Error),
#[error("Request timed out")]
Timeout,
#[error("Response body error: {0}")]
ResponseBody(anyhow::Error),
#[error("Invalid request: {0}")]
InvalidRequest(anyhow::Error),
#[error("HTTP error: {0}")]
Other(anyhow::Error),
}
pub trait HttpClientTrait: Clone + std::fmt::Debug {
fn new_client() -> Self;
fn request(
&self,
req: http::Request<bytes::Bytes>,
) -> impl Future<Output = Result<http::Response<bytes::Bytes>, HttpError>> + MaybeSend;
}