aws_sdk_applicationdiscovery/operation/
start_import_task.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `StartImportTask`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct StartImportTask;
6impl StartImportTask {
7    /// Creates a new `StartImportTask`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::start_import_task::StartImportTaskInput,
14    ) -> ::std::result::Result<
15        crate::operation::start_import_task::StartImportTaskOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::start_import_task::StartImportTaskError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::start_import_task::StartImportTaskError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::start_import_task::StartImportTaskOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::start_import_task::StartImportTaskInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
54            "applicationdiscoveryservice",
55            "StartImportTask",
56            input,
57            runtime_plugins,
58            stop_point,
59        )
60        .await
61    }
62
63    pub(crate) fn operation_runtime_plugins(
64        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
65        client_config: &crate::config::Config,
66        config_override: ::std::option::Option<crate::config::Builder>,
67    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
68        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
69        runtime_plugins = runtime_plugins
70            .with_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
71                |token_provider, input| {
72                    let input: &mut crate::operation::start_import_task::StartImportTaskInput = input.downcast_mut().expect("correct type");
73                    if input.client_request_token.is_none() {
74                        input.client_request_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
75                    }
76                },
77            ))
78            .with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
79                ::aws_runtime::auth::sigv4::SCHEME_ID,
80            ]));
81        if let ::std::option::Option::Some(config_override) = config_override {
82            for plugin in config_override.runtime_plugins.iter().cloned() {
83                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
84            }
85            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
86                config_override,
87                client_config.config.clone(),
88                &client_config.runtime_components,
89            ));
90        }
91        runtime_plugins
92    }
93}
94impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for StartImportTask {
95    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
96        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("StartImportTask");
97
98        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
99            StartImportTaskRequestSerializer,
100        ));
101        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
102            StartImportTaskResponseDeserializer,
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
106            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
107        ));
108
109        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
110            "StartImportTask",
111            "applicationdiscoveryservice",
112        ));
113        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
114        signing_options.double_uri_encode = true;
115        signing_options.content_sha256_header = false;
116        signing_options.normalize_uri_path = true;
117        signing_options.payload_override = None;
118
119        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
120            signing_options,
121            ..::std::default::Default::default()
122        });
123
124        ::std::option::Option::Some(cfg.freeze())
125    }
126
127    fn runtime_components(
128        &self,
129        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
130    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
131        #[allow(unused_mut)]
132        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("StartImportTask")
133            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
134            .with_interceptor(StartImportTaskEndpointParamsInterceptor)
135            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
136                crate::operation::start_import_task::StartImportTaskError,
137            >::new())
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
139                crate::operation::start_import_task::StartImportTaskError,
140            >::new())
141            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
142                crate::operation::start_import_task::StartImportTaskError,
143            >::new());
144
145        ::std::borrow::Cow::Owned(rcb)
146    }
147}
148
149#[derive(Debug)]
150struct StartImportTaskResponseDeserializer;
151impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StartImportTaskResponseDeserializer {
152    fn deserialize_nonstreaming(
153        &self,
154        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
155    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
156        let (success, status) = (response.status().is_success(), response.status().as_u16());
157        let headers = response.headers();
158        let body = response.body().bytes().expect("body loaded");
159        #[allow(unused_mut)]
160        let mut force_error = false;
161        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
162        let parse_result = if !success && status != 200 || force_error {
163            crate::protocol_serde::shape_start_import_task::de_start_import_task_http_error(status, headers, body)
164        } else {
165            crate::protocol_serde::shape_start_import_task::de_start_import_task_http_response(status, headers, body)
166        };
167        crate::protocol_serde::type_erase_result(parse_result)
168    }
169}
170#[derive(Debug)]
171struct StartImportTaskRequestSerializer;
172impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StartImportTaskRequestSerializer {
173    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
174    fn serialize_input(
175        &self,
176        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
177        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
178    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
179        let input = input
180            .downcast::<crate::operation::start_import_task::StartImportTaskInput>()
181            .expect("correct type");
182        let _header_serialization_settings = _cfg
183            .load::<crate::serialization_settings::HeaderSerializationSettings>()
184            .cloned()
185            .unwrap_or_default();
186        let mut request_builder = {
187            fn uri_base(
188                _input: &crate::operation::start_import_task::StartImportTaskInput,
189                output: &mut ::std::string::String,
190            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
191                use ::std::fmt::Write as _;
192                ::std::write!(output, "/").expect("formatting should succeed");
193                ::std::result::Result::Ok(())
194            }
195            #[allow(clippy::unnecessary_wraps)]
196            fn update_http_builder(
197                input: &crate::operation::start_import_task::StartImportTaskInput,
198                builder: ::http::request::Builder,
199            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
200                let mut uri = ::std::string::String::new();
201                uri_base(input, &mut uri)?;
202                ::std::result::Result::Ok(builder.method("POST").uri(uri))
203            }
204            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
205            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
206            builder = _header_serialization_settings.set_default_header(
207                builder,
208                ::http::header::HeaderName::from_static("x-amz-target"),
209                "AWSPoseidonService_V2015_11_01.StartImportTask",
210            );
211            builder
212        };
213        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_start_import_task::ser_start_import_task_input(&input)?);
214        if let Some(content_length) = body.content_length() {
215            let content_length = content_length.to_string();
216            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
217        }
218        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
219    }
220}
221#[derive(Debug)]
222struct StartImportTaskEndpointParamsInterceptor;
223
224impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartImportTaskEndpointParamsInterceptor {
225    fn name(&self) -> &'static str {
226        "StartImportTaskEndpointParamsInterceptor"
227    }
228
229    fn read_before_execution(
230        &self,
231        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
232            '_,
233            ::aws_smithy_runtime_api::client::interceptors::context::Input,
234            ::aws_smithy_runtime_api::client::interceptors::context::Output,
235            ::aws_smithy_runtime_api::client::interceptors::context::Error,
236        >,
237        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
238    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
239        let _input = context
240            .input()
241            .downcast_ref::<StartImportTaskInput>()
242            .ok_or("failed to downcast to StartImportTaskInput")?;
243
244        let params = crate::config::endpoint::Params::builder()
245            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
246            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
247            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
248            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
249            .build()
250            .map_err(|err| {
251                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
252            })?;
253        cfg.interceptor_state()
254            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
255        ::std::result::Result::Ok(())
256    }
257}
258
259// The get_* functions below are generated from JMESPath expressions in the
260// operationContextParams trait. They target the operation's input shape.
261
262/// Error type for the `StartImportTaskError` operation.
263#[non_exhaustive]
264#[derive(::std::fmt::Debug)]
265pub enum StartImportTaskError {
266    /// <p>The user does not have permission to perform the action. Check the IAM policy associated with this user.</p>
267    AuthorizationErrorException(crate::types::error::AuthorizationErrorException),
268    /// <p>The home Region is not set. Set the home Region to continue.</p>
269    HomeRegionNotSetException(crate::types::error::HomeRegionNotSetException),
270    /// <p>One or more parameters are not valid. Verify the parameters and try again.</p>
271    InvalidParameterException(crate::types::error::InvalidParameterException),
272    /// <p>The value of one or more parameters are either invalid or out of range. Verify the parameter values and try again.</p>
273    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
274    /// <p>This issue occurs when the same <code>clientRequestToken</code> is used with the <code>StartImportTask</code> action, but with different parameters. For example, you use the same request token but have two different import URLs, you can encounter this issue. If the import tasks are meant to be different, use a different <code>clientRequestToken</code>, and try again.</p>
275    ResourceInUseException(crate::types::error::ResourceInUseException),
276    /// <p>The server experienced an internal error. Try again.</p>
277    ServerInternalErrorException(crate::types::error::ServerInternalErrorException),
278    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
279    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
280    variable wildcard pattern and check `.code()`:
281     \
282    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
283     \
284    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StartImportTaskError) for what information is available for the error.")]
285    Unhandled(crate::error::sealed_unhandled::Unhandled),
286}
287impl StartImportTaskError {
288    /// Creates the `StartImportTaskError::Unhandled` variant from any error type.
289    pub fn unhandled(
290        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
291    ) -> Self {
292        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
293            source: err.into(),
294            meta: ::std::default::Default::default(),
295        })
296    }
297
298    /// Creates the `StartImportTaskError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
299    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
300        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
301            source: err.clone().into(),
302            meta: err,
303        })
304    }
305    ///
306    /// Returns error metadata, which includes the error code, message,
307    /// request ID, and potentially additional information.
308    ///
309    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
310        match self {
311            Self::AuthorizationErrorException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
312            Self::HomeRegionNotSetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
313            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
314            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
315            Self::ResourceInUseException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
316            Self::ServerInternalErrorException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
317            Self::Unhandled(e) => &e.meta,
318        }
319    }
320    /// Returns `true` if the error kind is `StartImportTaskError::AuthorizationErrorException`.
321    pub fn is_authorization_error_exception(&self) -> bool {
322        matches!(self, Self::AuthorizationErrorException(_))
323    }
324    /// Returns `true` if the error kind is `StartImportTaskError::HomeRegionNotSetException`.
325    pub fn is_home_region_not_set_exception(&self) -> bool {
326        matches!(self, Self::HomeRegionNotSetException(_))
327    }
328    /// Returns `true` if the error kind is `StartImportTaskError::InvalidParameterException`.
329    pub fn is_invalid_parameter_exception(&self) -> bool {
330        matches!(self, Self::InvalidParameterException(_))
331    }
332    /// Returns `true` if the error kind is `StartImportTaskError::InvalidParameterValueException`.
333    pub fn is_invalid_parameter_value_exception(&self) -> bool {
334        matches!(self, Self::InvalidParameterValueException(_))
335    }
336    /// Returns `true` if the error kind is `StartImportTaskError::ResourceInUseException`.
337    pub fn is_resource_in_use_exception(&self) -> bool {
338        matches!(self, Self::ResourceInUseException(_))
339    }
340    /// Returns `true` if the error kind is `StartImportTaskError::ServerInternalErrorException`.
341    pub fn is_server_internal_error_exception(&self) -> bool {
342        matches!(self, Self::ServerInternalErrorException(_))
343    }
344}
345impl ::std::error::Error for StartImportTaskError {
346    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
347        match self {
348            Self::AuthorizationErrorException(_inner) => ::std::option::Option::Some(_inner),
349            Self::HomeRegionNotSetException(_inner) => ::std::option::Option::Some(_inner),
350            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
351            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
352            Self::ResourceInUseException(_inner) => ::std::option::Option::Some(_inner),
353            Self::ServerInternalErrorException(_inner) => ::std::option::Option::Some(_inner),
354            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
355        }
356    }
357}
358impl ::std::fmt::Display for StartImportTaskError {
359    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
360        match self {
361            Self::AuthorizationErrorException(_inner) => _inner.fmt(f),
362            Self::HomeRegionNotSetException(_inner) => _inner.fmt(f),
363            Self::InvalidParameterException(_inner) => _inner.fmt(f),
364            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
365            Self::ResourceInUseException(_inner) => _inner.fmt(f),
366            Self::ServerInternalErrorException(_inner) => _inner.fmt(f),
367            Self::Unhandled(_inner) => {
368                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
369                    write!(f, "unhandled error ({code})")
370                } else {
371                    f.write_str("unhandled error")
372                }
373            }
374        }
375    }
376}
377impl ::aws_smithy_types::retry::ProvideErrorKind for StartImportTaskError {
378    fn code(&self) -> ::std::option::Option<&str> {
379        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
380    }
381    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
382        ::std::option::Option::None
383    }
384}
385impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StartImportTaskError {
386    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
387        match self {
388            Self::AuthorizationErrorException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
389            Self::HomeRegionNotSetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
390            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
391            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
392            Self::ResourceInUseException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
393            Self::ServerInternalErrorException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
394            Self::Unhandled(_inner) => &_inner.meta,
395        }
396    }
397}
398impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StartImportTaskError {
399    fn create_unhandled_error(
400        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
401        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
402    ) -> Self {
403        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
404            source,
405            meta: meta.unwrap_or_default(),
406        })
407    }
408}
409impl ::aws_types::request_id::RequestId for crate::operation::start_import_task::StartImportTaskError {
410    fn request_id(&self) -> Option<&str> {
411        self.meta().request_id()
412    }
413}
414
415pub use crate::operation::start_import_task::_start_import_task_output::StartImportTaskOutput;
416
417pub use crate::operation::start_import_task::_start_import_task_input::StartImportTaskInput;
418
419mod _start_import_task_input;
420
421mod _start_import_task_output;
422
423/// Builders
424pub mod builders;