use hyper::body::HttpBody;
pub use hyper::client::{Builder, Client};
use hyper::client::connect::Connect;
pub use hyper::client::connect::HttpConnector;
#[cfg(feature = "https")]
#[cfg_attr(docsrs, doc(cfg(feature = "https")))]
pub use hyper_tls::HttpsConnector;
#[cfg(feature = "__rustls")]
#[cfg_attr(docsrs, doc(cfg(feature = "rustls")))]
pub use hyper_rustls::HttpsConnector as RustlsConnector;
#[cfg(feature = "nativetls")]
#[cfg_attr(docsrs, doc(cfg(feature = "nativetls")))]
pub use hyper_tls::HttpsConnector as NativeTlsConnector;
pub fn builder() -> Builder {
Builder::default()
}
pub fn http_default<B>() -> Client<HttpConnector, B>
where
B: HttpBody + Send,
B::Data: Send,
{
Builder::default().build_http()
}
#[cfg(any(feature = "https", feature = "nativetls"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "https", feature = "nativetls"))))]
#[inline]
pub fn https_default<B>() -> Client<NativeTlsConnector<HttpConnector>, B>
where
B: HttpBody + Send,
B::Data: Send,
{
nativetls_default()
}
#[cfg(feature = "nativetls")]
#[cfg_attr(docsrs, doc(cfg(feature = "nativetls")))]
pub fn nativetls_default<B>() -> Client<NativeTlsConnector<HttpConnector>, B>
where
B: HttpBody + Send,
B::Data: Send,
{
Builder::default().build(NativeTlsConnector::new())
}
#[cfg(feature = "__rustls")]
#[cfg_attr(docsrs, doc(cfg(feature = "rustls")))]
pub fn rustls_default<B>() -> Client<RustlsConnector<HttpConnector>, B>
where
B: HttpBody + Send,
B::Data: Send,
{
let conn = hyper_rustls::HttpsConnectorBuilder::new();
#[cfg(feature = "rustls-webpki-roots")]
let conn = conn.with_webpki_roots();
#[cfg(all(not(feature = "rustls-webpki-roots"), feature = "rustls-native-roots"))]
let conn = conn.with_native_roots();
let conn = conn.https_only();
#[cfg(feature = "http1")]
let conn = conn.enable_http1();
#[cfg(feature = "rustls-http2")]
let conn = conn.enable_http2();
Builder::default().build(conn.build())
}
pub fn with_connector_default<C, B>(conn: C) -> Client<C, B>
where
C: Connect + Clone,
B: HttpBody + Send,
B::Data: Send,
{
Builder::default().build(conn)
}