aws_smithy_runtime/client/
http.rs1use aws_smithy_runtime_api::client::behavior_version::BehaviorVersion;
6#[cfg(feature = "default-https-client")]
7use aws_smithy_runtime_api::client::http::SharedHttpClient;
8
9pub mod connection_poisoning;
11
12#[deprecated = "Direct HTTP test utility support from `aws-smithy-runtime` crate is deprecated. Please use the `test-util` feature from `aws-smithy-http-client` instead"]
13#[cfg(any(feature = "test-util", feature = "legacy-test-util"))]
14pub mod test_util {
15 #![allow(missing_docs)]
16
17 pub use aws_smithy_http_client::test_util::{CaptureRequestHandler, CaptureRequestReceiver};
18
19 #[cfg(feature = "legacy-test-util")]
24 pub use aws_smithy_http_client::test_util::legacy_capture_request as capture_request;
25
26 #[cfg(feature = "legacy-test-util")]
27 pub use aws_smithy_http_client::test_util::legacy_infallible::infallible_client_fn;
28
29 #[cfg(feature = "connector-hyper-0-14-x")]
30 pub mod dvr {
31 pub use aws_smithy_http_client::test_util::dvr::*;
32 }
33
34 pub use aws_smithy_http_client::test_util::{ReplayEvent, StaticReplayClient};
35
36 pub use aws_smithy_http_client::test_util::NeverClient;
37
38 #[cfg(feature = "connector-hyper-0-14-x")]
39 pub use aws_smithy_http_client::test_util::NeverTcpConnector;
40
41 #[cfg(all(feature = "connector-hyper-0-14-x", feature = "wire-mock"))]
42 #[macro_use]
43 pub mod wire {
44 pub use aws_smithy_http_client::test_util::wire::ev;
45 pub use aws_smithy_http_client::test_util::wire::match_events;
46 pub use aws_smithy_http_client::test_util::wire::matcher;
47 pub use aws_smithy_http_client::test_util::wire::*;
48 }
49}
50
51#[cfg(feature = "connector-hyper-0-14-x")]
56#[deprecated = "hyper 0.14.x connector is deprecated, please use the `aws-smithy-http-client` crate directly instead."]
57pub mod hyper_014 {
58 #[allow(deprecated)]
59 pub use aws_smithy_http_client::hyper_014::*;
60}
61
62pub mod body;
64
65#[derive(Debug, Clone)]
68pub(crate) struct DefaultClientOptions {
69 behavior_version: BehaviorVersion,
70}
71
72impl Default for DefaultClientOptions {
73 fn default() -> Self {
74 DefaultClientOptions {
75 behavior_version: BehaviorVersion::latest(),
76 }
77 }
78}
79
80impl DefaultClientOptions {
81 #[allow(unused)]
83 pub(crate) fn with_behavior_version(mut self, behavior_version: BehaviorVersion) -> Self {
84 self.behavior_version = behavior_version;
85 self
86 }
87}
88
89#[cfg(feature = "default-https-client")]
91pub(crate) fn default_https_client(options: DefaultClientOptions) -> Option<SharedHttpClient> {
92 use aws_smithy_http_client::proxy::ProxyConfig;
93 use aws_smithy_http_client::{tls, Builder, ConnectorBuilder};
94 tracing::trace!("creating a new default hyper 1.x client using rustls<aws-lc>");
95
96 let client = Builder::new().build_with_connector_fn(move |settings, runtime_components| {
97 let mut conn_builder = ConnectorBuilder::default().tls_provider(tls::Provider::Rustls(
98 tls::rustls_provider::CryptoMode::AwsLc,
99 ));
100
101 conn_builder.set_connector_settings(settings.cloned());
102 if let Some(components) = runtime_components {
103 conn_builder.set_sleep_impl(components.sleep_impl());
104 }
105
106 #[expect(deprecated)]
107 if options
108 .behavior_version
109 .is_at_least(BehaviorVersion::v2025_08_07())
110 {
111 conn_builder.set_proxy_config(Some(ProxyConfig::from_env()));
112 } else {
113 conn_builder.set_proxy_config(Some(ProxyConfig::disabled()));
114 }
115
116 conn_builder.build()
117 });
118
119 Some(client)
120}