1use hyper::body::Body as HttpBody;
5#[cfg(feature = "__rustls")]
6#[cfg_attr(docsrs, doc(cfg(feature = "rustls")))]
7pub use hyper_rustls::HttpsConnector as RustlsConnector;
8#[cfg(feature = "https")]
9#[cfg_attr(docsrs, doc(cfg(feature = "https")))]
10pub use hyper_tls::HttpsConnector;
11#[cfg(feature = "nativetls")]
12#[cfg_attr(docsrs, doc(cfg(feature = "nativetls")))]
13pub use hyper_tls::HttpsConnector as NativeTlsConnector;
14use hyper_util::client::legacy::connect::Connect;
15pub use hyper_util::client::legacy::connect::HttpConnector;
16pub use hyper_util::client::legacy::{Builder, Client};
17
18#[must_use]
20pub fn builder() -> Builder {
21 Builder::new(hyper_util::rt::TokioExecutor::new())
22}
23
24#[must_use]
26pub fn http_default<B>() -> Client<HttpConnector, B>
27where
28 B: HttpBody + Send,
29 B::Data: Send,
30{
31 Builder::new(hyper_util::rt::TokioExecutor::new()).build_http()
32}
33
34#[cfg(any(feature = "https", feature = "nativetls"))]
36#[cfg_attr(docsrs, doc(cfg(any(feature = "https", feature = "nativetls"))))]
37#[inline]
38#[must_use]
39pub fn https_default<B>() -> Client<NativeTlsConnector<HttpConnector>, B>
40where
41 B: HttpBody + Send,
42 B::Data: Send,
43{
44 nativetls_default()
45}
46
47#[cfg(feature = "nativetls")]
49#[cfg_attr(docsrs, doc(cfg(feature = "nativetls")))]
50#[must_use]
51pub fn nativetls_default<B>() -> Client<NativeTlsConnector<HttpConnector>, B>
52where
53 B: HttpBody + Send,
54 B::Data: Send,
55{
56 Builder::new(hyper_util::rt::TokioExecutor::new()).build(NativeTlsConnector::new())
57}
58
59#[cfg(feature = "__rustls")]
87#[cfg_attr(docsrs, doc(cfg(feature = "rustls")))]
88#[must_use]
89pub fn rustls_default<B>() -> Client<RustlsConnector<HttpConnector>, B>
90where
91 B: HttpBody + Send,
92 B::Data: Send,
93{
94 let conn = hyper_rustls::HttpsConnectorBuilder::new();
95 #[cfg(feature = "rustls-webpki-roots")]
96 let conn = conn.with_webpki_roots();
97 #[cfg(all(not(feature = "rustls-webpki-roots"), feature = "rustls-native-roots"))]
98 let conn = conn.with_native_roots();
99 let conn = conn.https_only();
100 #[cfg(feature = "http1")]
101 let conn = conn.enable_http1();
102 #[cfg(feature = "rustls-http2")]
103 let conn = conn.enable_http2();
104 Builder::new(hyper_util::rt::TokioExecutor::new()).build(conn.build())
105}
106
107pub fn with_connector_default<C, B>(conn: C) -> Client<C, B>
109where
110 C: Connect + Clone,
111 B: HttpBody + Send,
112 B::Data: Send,
113{
114 Builder::new(hyper_util::rt::TokioExecutor::new()).build(conn)
115}