aws_sdk_continuum/client.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[derive(Debug)]
3pub(crate) struct Handle {
4 pub(crate) conf: crate::Config,
5 #[allow(dead_code)] // unused when a service does not provide any operations
6 pub(crate) runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
7}
8
9/// Client for AWS Continuum
10///
11/// Client for invoking operations on AWS Continuum. Each operation on AWS Continuum is a method on this
12/// this struct. `.send()` MUST be invoked on the generated operations to dispatch the request to the service.
13/// ## Constructing a `Client`
14///
15/// A [`Config`] is required to construct a client. For most use cases, the [`aws-config`]
16/// crate should be used to automatically resolve this config using
17/// [`aws_config::load_from_env()`], since this will resolve an [`SdkConfig`] which can be shared
18/// across multiple different AWS SDK clients. This config resolution process can be customized
19/// by calling [`aws_config::from_env()`] instead, which returns a [`ConfigLoader`] that uses
20/// the [builder pattern] to customize the default config.
21///
22/// In the simplest case, creating a client looks as follows:
23/// ```rust,no_run
24/// # async fn wrapper() {
25/// let config = aws_config::load_from_env().await;
26/// let client = aws_sdk_continuum::Client::new(&config);
27/// # }
28/// ```
29///
30/// Occasionally, SDKs may have additional service-specific values that can be set on the [`Config`] that
31/// is absent from [`SdkConfig`], or slightly different settings for a specific client may be desired.
32/// The [`Builder`](crate::config::Builder) struct implements `From<&SdkConfig>`, so setting these specific settings can be
33/// done as follows:
34///
35/// ```rust,no_run
36/// # async fn wrapper() {
37/// let sdk_config = ::aws_config::load_from_env().await;
38/// let config = aws_sdk_continuum::config::Builder::from(&sdk_config)
39/// # /*
40/// .some_service_specific_setting("value")
41/// # */
42/// .build();
43/// # }
44/// ```
45///
46/// See the [`aws-config` docs] and [`Config`] for more information on customizing configuration.
47///
48/// _Note:_ Client construction is expensive due to connection thread pool initialization, and should
49/// be done once at application start-up.
50///
51/// [`Config`]: crate::Config
52/// [`ConfigLoader`]: https://docs.rs/aws-config/*/aws_config/struct.ConfigLoader.html
53/// [`SdkConfig`]: https://docs.rs/aws-config/*/aws_config/struct.SdkConfig.html
54/// [`aws-config` docs]: https://docs.rs/aws-config/*
55/// [`aws-config`]: https://crates.io/crates/aws-config
56/// [`aws_config::from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.from_env.html
57/// [`aws_config::load_from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.load_from_env.html
58/// [builder pattern]: https://rust-lang.github.io/api-guidelines/type-safety.html#builders-enable-construction-of-complex-values-c-builder
59/// # Using the `Client`
60///
61/// A client has a function for every operation that can be performed by the service.
62/// For example, the [`AssociateCollector`](crate::operation::associate_collector) operation has
63/// a [`Client::associate_collector`], function which returns a builder for that operation.
64/// The fluent builder ultimately has a `send()` function that returns an async future that
65/// returns a result, as illustrated below:
66///
67/// ```rust,ignore
68/// let result = client.associate_collector()
69/// .environment_id("example")
70/// .send()
71/// .await;
72/// ```
73///
74/// The underlying HTTP requests that get made by this can be modified with the `customize_operation`
75/// function on the fluent builder. See the [`customize`](crate::client::customize) module for more
76/// information.
77/// # Waiters
78///
79/// This client provides `wait_until` methods behind the [`Waiters`](crate::client::Waiters) trait.
80/// To use them, simply import the trait, and then call one of the `wait_until` methods. This will
81/// return a waiter fluent builder that takes various parameters, which are documented on the builder
82/// type. Once parameters have been provided, the `wait` method can be called to initiate waiting.
83///
84/// For example, if there was a `wait_until_thing` method, it could look like:
85/// ```rust,ignore
86/// let result = client.wait_until_thing()
87/// .thing_id("someId")
88/// .wait(Duration::from_secs(120))
89/// .await;
90/// ```
91#[derive(::std::clone::Clone, ::std::fmt::Debug)]
92pub struct Client {
93 handle: ::std::sync::Arc<Handle>,
94}
95
96impl Client {
97 /// Creates a new client from the service [`Config`](crate::Config).
98 ///
99 /// # Panics
100 ///
101 /// This method will panic in the following cases:
102 ///
103 /// - Retries or timeouts are enabled without a `sleep_impl` configured.
104 /// - Identity caching is enabled without a `sleep_impl` and `time_source` configured.
105 /// - No `behavior_version` is provided.
106 ///
107 /// The panic message for each of these will have instructions on how to resolve them.
108 #[track_caller]
109 pub fn from_conf(conf: crate::Config) -> Self {
110 let handle = Handle {
111 conf: conf.clone(),
112 runtime_plugins: crate::config::base_client_runtime_plugins(conf),
113 };
114 if let Err(err) = Self::validate_config(&handle) {
115 panic!("Invalid client configuration: {err}");
116 }
117 Self {
118 handle: ::std::sync::Arc::new(handle),
119 }
120 }
121
122 /// Returns the client's configuration.
123 pub fn config(&self) -> &crate::Config {
124 &self.handle.conf
125 }
126
127 fn validate_config(handle: &Handle) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
128 let mut cfg = ::aws_smithy_types::config_bag::ConfigBag::base();
129 handle
130 .runtime_plugins
131 .apply_client_configuration(&mut cfg)?
132 .validate_base_client_config(&cfg)?;
133 Ok(())
134 }
135}
136
137///
138/// Waiter functions for the client.
139///
140/// Import this trait to get `wait_until` methods on the client.
141///
142pub trait Waiters {
143 /// Waits until the scan reaches SUCCEEDED, at which point the scan has finished and its findings are available from ListCodeFindings (filter on scanRunId). Triage of those findings and creation of issues continue asynchronously after the scan succeeds. Fails if the scan reaches FAILED. Scans run a build followed by analysis and can take from minutes to several hours. SDKs that use exponential backoff wait at least 60 seconds between polls and back off to at most 8 hours between polls, until the caller's maximum wait time elapses. SDKs and the AWS CLI that use a fixed delay poll every 60 seconds for up to 480 attempts (8 hours).
144 fn wait_until_code_scan_succeeded(&self) -> crate::waiters::code_scan_succeeded::CodeScanSucceededFluentBuilder;
145}
146impl Waiters for Client {
147 fn wait_until_code_scan_succeeded(&self) -> crate::waiters::code_scan_succeeded::CodeScanSucceededFluentBuilder {
148 crate::waiters::code_scan_succeeded::CodeScanSucceededFluentBuilder::new(self.handle.clone())
149 }
150}
151
152impl Client {
153 /// Creates a new client from an [SDK Config](::aws_types::sdk_config::SdkConfig).
154 ///
155 /// # Panics
156 ///
157 /// - This method will panic if the `sdk_config` is missing an async sleep implementation. If you experience this panic, set
158 /// the `sleep_impl` on the Config passed into this function to fix it.
159 /// - This method will panic if the `sdk_config` is missing an HTTP connector. If you experience this panic, set the
160 /// `http_connector` on the Config passed into this function to fix it.
161 /// - This method will panic if no `BehaviorVersion` is provided. If you experience this panic, set `behavior_version` on the Config or enable the `behavior-version-latest` Cargo feature.
162 #[track_caller]
163 pub fn new(sdk_config: &::aws_types::sdk_config::SdkConfig) -> Self {
164 Self::from_conf(sdk_config.into())
165 }
166}
167
168mod associate_collector;
169
170mod create_code_finding;
171
172mod create_code_scan;
173
174mod create_collector;
175
176mod create_environment;
177
178mod create_integration;
179
180/// Operation customization and supporting types.
181///
182/// The underlying HTTP requests made during an operation can be customized
183/// by calling the `customize()` method on the builder returned from a client
184/// operation call. For example, this can be used to add an additional HTTP header:
185///
186/// ```ignore
187/// # async fn wrapper() -> ::std::result::Result<(), aws_sdk_continuum::Error> {
188/// # let client: aws_sdk_continuum::Client = unimplemented!();
189/// use ::http_1x::header::{HeaderName, HeaderValue};
190///
191/// let result = client.associate_collector()
192/// .customize()
193/// .mutate_request(|req| {
194/// // Add `x-example-header` with value
195/// req.headers_mut()
196/// .insert(
197/// HeaderName::from_static("x-example-header"),
198/// HeaderValue::from_static("1"),
199/// );
200/// })
201/// .send()
202/// .await;
203/// # }
204/// ```
205pub mod customize;
206
207mod delete_collector;
208
209mod delete_environment;
210
211mod delete_integration;
212
213mod disassociate_collector;
214
215mod get_code_finding;
216
217mod get_code_issue;
218
219mod get_code_issue_artifact;
220
221mod get_code_scan;
222
223mod get_collector;
224
225mod get_collector_data_access_authorization;
226
227mod get_environment;
228
229mod get_integration;
230
231mod get_resource_policy;
232
233mod list_associated_collectors;
234
235mod list_associated_environments;
236
237mod list_code_findings;
238
239mod list_code_issue_artifacts;
240
241mod list_code_issues;
242
243mod list_code_scans;
244
245mod list_collectors;
246
247mod list_environments;
248
249mod list_integrations;
250
251mod put_resource_policy;
252
253mod start_integration_authorization;
254
255mod update_collector;
256
257mod update_environment;
258
259mod update_integration;