aws_sdk_resourceexplorer2/operation/
create_resource_explorer_setup.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateResourceExplorerSetup`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateResourceExplorerSetup;
6impl CreateResourceExplorerSetup {
7    /// Creates a new `CreateResourceExplorerSetup`
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::create_resource_explorer_setup::CreateResourceExplorerSetupInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupError,
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::create_resource_explorer_setup::CreateResourceExplorerSetupError>()
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::create_resource_explorer_setup::CreateResourceExplorerSetupOutput>()
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::create_resource_explorer_setup::CreateResourceExplorerSetupInput,
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        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "Resource Explorer 2",
56            "CreateResourceExplorerSetup",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "Resource Explorer 2.CreateResourceExplorerSetup",
65            "rpc.service" = "Resource Explorer 2",
66            "rpc.method" = "CreateResourceExplorerSetup",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateResourceExplorerSetup {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateResourceExplorerSetup");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            CreateResourceExplorerSetupRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            CreateResourceExplorerSetupResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("CreateResourceExplorerSetup")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "CreateResourceExplorerSetup",
113            "Resource Explorer 2",
114        ));
115        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
116        signing_options.double_uri_encode = true;
117        signing_options.content_sha256_header = false;
118        signing_options.normalize_uri_path = true;
119        signing_options.payload_override = None;
120
121        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
122            signing_options,
123            ..::std::default::Default::default()
124        });
125
126        ::std::option::Option::Some(cfg.freeze())
127    }
128
129    fn runtime_components(
130        &self,
131        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
132    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
133        #[allow(unused_mut)]
134        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateResourceExplorerSetup")
135            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
136            .with_interceptor(CreateResourceExplorerSetupEndpointParamsInterceptor)
137            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
138                crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupError,
139            >::new())
140            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
141                crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupError,
142            >::new())
143            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
144                crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupError,
145            >::new());
146
147        ::std::borrow::Cow::Owned(rcb)
148    }
149}
150
151#[derive(Debug)]
152struct CreateResourceExplorerSetupResponseDeserializer;
153impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateResourceExplorerSetupResponseDeserializer {
154    fn deserialize_nonstreaming(
155        &self,
156        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
157    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
158        let (success, status) = (response.status().is_success(), response.status().as_u16());
159        let headers = response.headers();
160        let body = response.body().bytes().expect("body loaded");
161        #[allow(unused_mut)]
162        let mut force_error = false;
163        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
164        let parse_result = if !success && status != 200 || force_error {
165            crate::protocol_serde::shape_create_resource_explorer_setup::de_create_resource_explorer_setup_http_error(status, headers, body)
166        } else {
167            crate::protocol_serde::shape_create_resource_explorer_setup::de_create_resource_explorer_setup_http_response(status, headers, body)
168        };
169        crate::protocol_serde::type_erase_result(parse_result)
170    }
171}
172#[derive(Debug)]
173struct CreateResourceExplorerSetupRequestSerializer;
174impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateResourceExplorerSetupRequestSerializer {
175    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
176    fn serialize_input(
177        &self,
178        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
179        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
180    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
181        let input = input
182            .downcast::<crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupInput>()
183            .expect("correct type");
184        let _header_serialization_settings = _cfg
185            .load::<crate::serialization_settings::HeaderSerializationSettings>()
186            .cloned()
187            .unwrap_or_default();
188        let mut request_builder = {
189            fn uri_base(
190                _input: &crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupInput,
191                output: &mut ::std::string::String,
192            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
193                use ::std::fmt::Write as _;
194                ::std::write!(output, "/CreateResourceExplorerSetup").expect("formatting should succeed");
195                ::std::result::Result::Ok(())
196            }
197            #[allow(clippy::unnecessary_wraps)]
198            fn update_http_builder(
199                input: &crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupInput,
200                builder: ::http::request::Builder,
201            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
202                let mut uri = ::std::string::String::new();
203                uri_base(input, &mut uri)?;
204                ::std::result::Result::Ok(builder.method("POST").uri(uri))
205            }
206            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
207            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
208            builder
209        };
210        let body = ::aws_smithy_types::body::SdkBody::from(
211            crate::protocol_serde::shape_create_resource_explorer_setup::ser_create_resource_explorer_setup_input(&input)?,
212        );
213        if let Some(content_length) = body.content_length() {
214            let content_length = content_length.to_string();
215            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
216        }
217        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
218    }
219}
220#[derive(Debug)]
221struct CreateResourceExplorerSetupEndpointParamsInterceptor;
222
223impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateResourceExplorerSetupEndpointParamsInterceptor {
224    fn name(&self) -> &'static str {
225        "CreateResourceExplorerSetupEndpointParamsInterceptor"
226    }
227
228    fn read_before_execution(
229        &self,
230        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
231            '_,
232            ::aws_smithy_runtime_api::client::interceptors::context::Input,
233            ::aws_smithy_runtime_api::client::interceptors::context::Output,
234            ::aws_smithy_runtime_api::client::interceptors::context::Error,
235        >,
236        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
237    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
238        let _input = context
239            .input()
240            .downcast_ref::<CreateResourceExplorerSetupInput>()
241            .ok_or("failed to downcast to CreateResourceExplorerSetupInput")?;
242
243        let params = crate::config::endpoint::Params::builder()
244            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
245            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
246            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
247            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
248            .build()
249            .map_err(|err| {
250                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
251            })?;
252        cfg.interceptor_state()
253            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
254        ::std::result::Result::Ok(())
255    }
256}
257
258// The get_* functions below are generated from JMESPath expressions in the
259// operationContextParams trait. They target the operation's input shape.
260
261/// Error type for the `CreateResourceExplorerSetupError` operation.
262#[non_exhaustive]
263#[derive(::std::fmt::Debug)]
264pub enum CreateResourceExplorerSetupError {
265    /// <p>The credentials that you used to call this operation don't have the minimum required permissions.</p>
266    AccessDeniedException(crate::types::error::AccessDeniedException),
267    /// <p>If you attempted to create a view, then the request failed because either you specified parameters that didn’t match the original request, or you attempted to create a view with a name that already exists in this Amazon Web Services Region.</p>
268    /// <p>If you attempted to create an index, then the request failed because either you specified parameters that didn't match the original request, or an index already exists in the current Amazon Web Services Region.</p>
269    /// <p>If you attempted to update an index type to <code>AGGREGATOR</code>, then the request failed because you already have an <code>AGGREGATOR</code> index in a different Amazon Web Services Region.</p>
270    ConflictException(crate::types::error::ConflictException),
271    /// <p>The request failed because of internal service error. Try your request again later.</p>
272    InternalServerException(crate::types::error::InternalServerException),
273    /// <p>The request failed because you exceeded a rate limit for this operation. For more information, see <a href="https://docs.aws.amazon.com/resource-explorer/latest/userguide/quotas.html">Quotas for Resource Explorer</a>.</p>
274    ThrottlingException(crate::types::error::ThrottlingException),
275    /// <p>You provided an invalid value for one of the operation's parameters. Check the syntax for the operation, and try again.</p>
276    ValidationException(crate::types::error::ValidationException),
277    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
278    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
279    variable wildcard pattern and check `.code()`:
280     \
281    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
282     \
283    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateResourceExplorerSetupError) for what information is available for the error.")]
284    Unhandled(crate::error::sealed_unhandled::Unhandled),
285}
286impl CreateResourceExplorerSetupError {
287    /// Creates the `CreateResourceExplorerSetupError::Unhandled` variant from any error type.
288    pub fn unhandled(
289        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
290    ) -> Self {
291        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
292            source: err.into(),
293            meta: ::std::default::Default::default(),
294        })
295    }
296
297    /// Creates the `CreateResourceExplorerSetupError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
298    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
299        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
300            source: err.clone().into(),
301            meta: err,
302        })
303    }
304    ///
305    /// Returns error metadata, which includes the error code, message,
306    /// request ID, and potentially additional information.
307    ///
308    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
309        match self {
310            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
311            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
312            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
313            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
314            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
315            Self::Unhandled(e) => &e.meta,
316        }
317    }
318    /// Returns `true` if the error kind is `CreateResourceExplorerSetupError::AccessDeniedException`.
319    pub fn is_access_denied_exception(&self) -> bool {
320        matches!(self, Self::AccessDeniedException(_))
321    }
322    /// Returns `true` if the error kind is `CreateResourceExplorerSetupError::ConflictException`.
323    pub fn is_conflict_exception(&self) -> bool {
324        matches!(self, Self::ConflictException(_))
325    }
326    /// Returns `true` if the error kind is `CreateResourceExplorerSetupError::InternalServerException`.
327    pub fn is_internal_server_exception(&self) -> bool {
328        matches!(self, Self::InternalServerException(_))
329    }
330    /// Returns `true` if the error kind is `CreateResourceExplorerSetupError::ThrottlingException`.
331    pub fn is_throttling_exception(&self) -> bool {
332        matches!(self, Self::ThrottlingException(_))
333    }
334    /// Returns `true` if the error kind is `CreateResourceExplorerSetupError::ValidationException`.
335    pub fn is_validation_exception(&self) -> bool {
336        matches!(self, Self::ValidationException(_))
337    }
338}
339impl ::std::error::Error for CreateResourceExplorerSetupError {
340    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
341        match self {
342            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
343            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
344            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
345            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
346            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
347            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
348        }
349    }
350}
351impl ::std::fmt::Display for CreateResourceExplorerSetupError {
352    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
353        match self {
354            Self::AccessDeniedException(_inner) => _inner.fmt(f),
355            Self::ConflictException(_inner) => _inner.fmt(f),
356            Self::InternalServerException(_inner) => _inner.fmt(f),
357            Self::ThrottlingException(_inner) => _inner.fmt(f),
358            Self::ValidationException(_inner) => _inner.fmt(f),
359            Self::Unhandled(_inner) => {
360                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
361                    write!(f, "unhandled error ({code})")
362                } else {
363                    f.write_str("unhandled error")
364                }
365            }
366        }
367    }
368}
369impl ::aws_smithy_types::retry::ProvideErrorKind for CreateResourceExplorerSetupError {
370    fn code(&self) -> ::std::option::Option<&str> {
371        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
372    }
373    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
374        ::std::option::Option::None
375    }
376}
377impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateResourceExplorerSetupError {
378    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
379        match self {
380            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
381            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
382            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
383            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
384            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
385            Self::Unhandled(_inner) => &_inner.meta,
386        }
387    }
388}
389impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateResourceExplorerSetupError {
390    fn create_unhandled_error(
391        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
392        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
393    ) -> Self {
394        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
395            source,
396            meta: meta.unwrap_or_default(),
397        })
398    }
399}
400impl ::aws_types::request_id::RequestId for crate::operation::create_resource_explorer_setup::CreateResourceExplorerSetupError {
401    fn request_id(&self) -> Option<&str> {
402        self.meta().request_id()
403    }
404}
405
406pub use crate::operation::create_resource_explorer_setup::_create_resource_explorer_setup_output::CreateResourceExplorerSetupOutput;
407
408pub use crate::operation::create_resource_explorer_setup::_create_resource_explorer_setup_input::CreateResourceExplorerSetupInput;
409
410mod _create_resource_explorer_setup_input;
411
412mod _create_resource_explorer_setup_output;
413
414/// Builders
415pub mod builders;