client_util/client/
hyper.rs1use hyper_util::{
2 client::legacy::{connect::HttpConnector, Client as HyperClient},
3 rt::TokioExecutor,
4};
5
6#[cfg(feature = "client-hyper-rustls")]
8#[cfg_attr(docsrs, doc(cfg(feature = "client-hyper-rustls")))]
9mod tls {
10 use hyper_util::{
11 client::legacy::{connect::HttpConnector, Client as HyperClient},
12 rt::TokioExecutor,
13 };
14 use rustls::ClientConfig;
15
16 pub type HyperHttpsClient<B> = HyperClient<HttpsConnector<HttpConnector>, B>;
17
18 use hyper_rustls::{ConfigBuilderExt, HttpsConnector};
19 pub fn build_https_client<B>() -> std::io::Result<HyperHttpsClient<B>>
20 where
21 B: http_body::Body + Send,
22 B::Data: Send,
23 {
24 let client = HyperClient::builder(TokioExecutor::default()).build(
25 HttpsConnector::<HttpConnector>::builder()
26 .with_tls_config(
27 ClientConfig::builder()
28 .with_native_roots()?
29 .with_no_client_auth(),
30 )
31 .https_or_http()
32 .enable_all_versions()
33 .build(),
34 );
35 Ok(client)
36 }
37}
38
39#[cfg(feature = "client-hyper-rustls")]
40#[cfg_attr(docsrs, doc(cfg(feature = "client-hyper-rustls")))]
41pub use tls::*;
42
43type HyperHttpClient<B> = HyperClient<HttpConnector, B>;
44
45pub fn build_http_client<B>() -> HyperHttpClient<B>
46where
47 B: http_body::Body + Send,
48 B::Data: Send,
49{
50 HyperClient::builder(TokioExecutor::default()).build(HttpConnector::new())
51}