aws_sdk_applicationdiscovery/operation/
start_continuous_export.rs

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