aws_sdk_quicksight/operation/
delete_user.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteUser`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteUser;
6impl DeleteUser {
7    /// Creates a new `DeleteUser`
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::delete_user::DeleteUserInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_user::DeleteUserOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_user::DeleteUserError,
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::delete_user::DeleteUserError>()
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::delete_user::DeleteUserOutput>()
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::delete_user::DeleteUserInput,
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("QuickSight", "DeleteUser", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "QuickSight.DeleteUser",
59                "rpc.service" = "QuickSight",
60                "rpc.method" = "DeleteUser",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_runtime::auth::sigv4::SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DeleteUser {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteUser");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            DeleteUserRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            DeleteUserResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("DeleteUser", "QuickSight"));
105        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
106        signing_options.double_uri_encode = true;
107        signing_options.content_sha256_header = false;
108        signing_options.normalize_uri_path = true;
109        signing_options.payload_override = None;
110
111        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
112            signing_options,
113            ..::std::default::Default::default()
114        });
115
116        ::std::option::Option::Some(cfg.freeze())
117    }
118
119    fn runtime_components(
120        &self,
121        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
122    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
123        #[allow(unused_mut)]
124        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteUser")
125            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
126            .with_interceptor(DeleteUserEndpointParamsInterceptor)
127            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
128                crate::operation::delete_user::DeleteUserError,
129            >::new())
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
131                crate::operation::delete_user::DeleteUserError,
132            >::new())
133            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
134                crate::operation::delete_user::DeleteUserError,
135            >::new());
136
137        ::std::borrow::Cow::Owned(rcb)
138    }
139}
140
141#[derive(Debug)]
142struct DeleteUserResponseDeserializer;
143impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteUserResponseDeserializer {
144    fn deserialize_nonstreaming(
145        &self,
146        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
147    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
148        let (success, status) = (response.status().is_success(), response.status().as_u16());
149        let headers = response.headers();
150        let body = response.body().bytes().expect("body loaded");
151        #[allow(unused_mut)]
152        let mut force_error = false;
153        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
154        let parse_result = if !success && status != 200 || force_error {
155            crate::protocol_serde::shape_delete_user::de_delete_user_http_error(status, headers, body)
156        } else {
157            crate::protocol_serde::shape_delete_user::de_delete_user_http_response(status, headers, body)
158        };
159        crate::protocol_serde::type_erase_result(parse_result)
160    }
161}
162#[derive(Debug)]
163struct DeleteUserRequestSerializer;
164impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteUserRequestSerializer {
165    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
166    fn serialize_input(
167        &self,
168        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
169        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
170    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
171        let input = input.downcast::<crate::operation::delete_user::DeleteUserInput>().expect("correct type");
172        let _header_serialization_settings = _cfg
173            .load::<crate::serialization_settings::HeaderSerializationSettings>()
174            .cloned()
175            .unwrap_or_default();
176        let mut request_builder = {
177            fn uri_base(
178                _input: &crate::operation::delete_user::DeleteUserInput,
179                output: &mut ::std::string::String,
180            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
181                use ::std::fmt::Write as _;
182                let input_1 = &_input.aws_account_id;
183                let input_1 = input_1
184                    .as_ref()
185                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
186                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
187                if aws_account_id.is_empty() {
188                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
189                        "aws_account_id",
190                        "cannot be empty or unset",
191                    ));
192                }
193                let input_2 = &_input.namespace;
194                let input_2 = input_2
195                    .as_ref()
196                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("namespace", "cannot be empty or unset"))?;
197                let namespace = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
198                if namespace.is_empty() {
199                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
200                        "namespace",
201                        "cannot be empty or unset",
202                    ));
203                }
204                let input_3 = &_input.user_name;
205                let input_3 = input_3
206                    .as_ref()
207                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("user_name", "cannot be empty or unset"))?;
208                let user_name = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
209                if user_name.is_empty() {
210                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
211                        "user_name",
212                        "cannot be empty or unset",
213                    ));
214                }
215                ::std::write!(
216                    output,
217                    "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}",
218                    AwsAccountId = aws_account_id,
219                    Namespace = namespace,
220                    UserName = user_name
221                )
222                .expect("formatting should succeed");
223                ::std::result::Result::Ok(())
224            }
225            #[allow(clippy::unnecessary_wraps)]
226            fn update_http_builder(
227                input: &crate::operation::delete_user::DeleteUserInput,
228                builder: ::http::request::Builder,
229            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
230                let mut uri = ::std::string::String::new();
231                uri_base(input, &mut uri)?;
232                ::std::result::Result::Ok(builder.method("DELETE").uri(uri))
233            }
234            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
235            builder
236        };
237        let body = ::aws_smithy_types::body::SdkBody::from("");
238
239        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
240    }
241}
242#[derive(Debug)]
243struct DeleteUserEndpointParamsInterceptor;
244
245impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteUserEndpointParamsInterceptor {
246    fn name(&self) -> &'static str {
247        "DeleteUserEndpointParamsInterceptor"
248    }
249
250    fn read_before_execution(
251        &self,
252        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
253            '_,
254            ::aws_smithy_runtime_api::client::interceptors::context::Input,
255            ::aws_smithy_runtime_api::client::interceptors::context::Output,
256            ::aws_smithy_runtime_api::client::interceptors::context::Error,
257        >,
258        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
259    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
260        let _input = context
261            .input()
262            .downcast_ref::<DeleteUserInput>()
263            .ok_or("failed to downcast to DeleteUserInput")?;
264
265        let params = crate::config::endpoint::Params::builder()
266            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
267            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
268            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
269            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
270            .build()
271            .map_err(|err| {
272                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
273            })?;
274        cfg.interceptor_state()
275            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
276        ::std::result::Result::Ok(())
277    }
278}
279
280// The get_* functions below are generated from JMESPath expressions in the
281// operationContextParams trait. They target the operation's input shape.
282
283/// Error type for the `DeleteUserError` operation.
284#[non_exhaustive]
285#[derive(::std::fmt::Debug)]
286pub enum DeleteUserError {
287    /// <p>You don't have access to this item. The provided credentials couldn't be validated. You might not be authorized to carry out the request. Make sure that your account is authorized to use the Amazon QuickSight service, that your policies have the correct permissions, and that you are using the correct credentials.</p>
288    AccessDeniedException(crate::types::error::AccessDeniedException),
289    /// <p>An internal failure occurred.</p>
290    InternalFailureException(crate::types::error::InternalFailureException),
291    /// <p>One or more parameters has a value that isn't valid.</p>
292    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
293    /// <p>One or more preconditions aren't met.</p>
294    PreconditionNotMetException(crate::types::error::PreconditionNotMetException),
295    /// <p>One or more resources can't be found.</p>
296    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
297    /// <p>This resource is currently unavailable.</p>
298    ResourceUnavailableException(crate::types::error::ResourceUnavailableException),
299    /// <p>Access is throttled.</p>
300    ThrottlingException(crate::types::error::ThrottlingException),
301    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
302    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
303    variable wildcard pattern and check `.code()`:
304     \
305    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
306     \
307    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteUserError) for what information is available for the error.")]
308    Unhandled(crate::error::sealed_unhandled::Unhandled),
309}
310impl DeleteUserError {
311    /// Creates the `DeleteUserError::Unhandled` variant from any error type.
312    pub fn unhandled(
313        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
314    ) -> Self {
315        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
316            source: err.into(),
317            meta: ::std::default::Default::default(),
318        })
319    }
320
321    /// Creates the `DeleteUserError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
322    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
323        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
324            source: err.clone().into(),
325            meta: err,
326        })
327    }
328    ///
329    /// Returns error metadata, which includes the error code, message,
330    /// request ID, and potentially additional information.
331    ///
332    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
333        match self {
334            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::PreconditionNotMetException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::ResourceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::Unhandled(e) => &e.meta,
342        }
343    }
344    /// Returns `true` if the error kind is `DeleteUserError::AccessDeniedException`.
345    pub fn is_access_denied_exception(&self) -> bool {
346        matches!(self, Self::AccessDeniedException(_))
347    }
348    /// Returns `true` if the error kind is `DeleteUserError::InternalFailureException`.
349    pub fn is_internal_failure_exception(&self) -> bool {
350        matches!(self, Self::InternalFailureException(_))
351    }
352    /// Returns `true` if the error kind is `DeleteUserError::InvalidParameterValueException`.
353    pub fn is_invalid_parameter_value_exception(&self) -> bool {
354        matches!(self, Self::InvalidParameterValueException(_))
355    }
356    /// Returns `true` if the error kind is `DeleteUserError::PreconditionNotMetException`.
357    pub fn is_precondition_not_met_exception(&self) -> bool {
358        matches!(self, Self::PreconditionNotMetException(_))
359    }
360    /// Returns `true` if the error kind is `DeleteUserError::ResourceNotFoundException`.
361    pub fn is_resource_not_found_exception(&self) -> bool {
362        matches!(self, Self::ResourceNotFoundException(_))
363    }
364    /// Returns `true` if the error kind is `DeleteUserError::ResourceUnavailableException`.
365    pub fn is_resource_unavailable_exception(&self) -> bool {
366        matches!(self, Self::ResourceUnavailableException(_))
367    }
368    /// Returns `true` if the error kind is `DeleteUserError::ThrottlingException`.
369    pub fn is_throttling_exception(&self) -> bool {
370        matches!(self, Self::ThrottlingException(_))
371    }
372}
373impl ::std::error::Error for DeleteUserError {
374    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
375        match self {
376            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
377            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
378            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
379            Self::PreconditionNotMetException(_inner) => ::std::option::Option::Some(_inner),
380            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
381            Self::ResourceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
382            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
383            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
384        }
385    }
386}
387impl ::std::fmt::Display for DeleteUserError {
388    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
389        match self {
390            Self::AccessDeniedException(_inner) => _inner.fmt(f),
391            Self::InternalFailureException(_inner) => _inner.fmt(f),
392            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
393            Self::PreconditionNotMetException(_inner) => _inner.fmt(f),
394            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
395            Self::ResourceUnavailableException(_inner) => _inner.fmt(f),
396            Self::ThrottlingException(_inner) => _inner.fmt(f),
397            Self::Unhandled(_inner) => {
398                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
399                    write!(f, "unhandled error ({code})")
400                } else {
401                    f.write_str("unhandled error")
402                }
403            }
404        }
405    }
406}
407impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteUserError {
408    fn code(&self) -> ::std::option::Option<&str> {
409        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
410    }
411    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
412        ::std::option::Option::None
413    }
414}
415impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteUserError {
416    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
417        match self {
418            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
419            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
420            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
421            Self::PreconditionNotMetException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
422            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::ResourceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
425            Self::Unhandled(_inner) => &_inner.meta,
426        }
427    }
428}
429impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteUserError {
430    fn create_unhandled_error(
431        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
432        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
433    ) -> Self {
434        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
435            source,
436            meta: meta.unwrap_or_default(),
437        })
438    }
439}
440impl ::aws_types::request_id::RequestId for crate::operation::delete_user::DeleteUserError {
441    fn request_id(&self) -> Option<&str> {
442        self.meta().request_id()
443    }
444}
445
446pub use crate::operation::delete_user::_delete_user_output::DeleteUserOutput;
447
448pub use crate::operation::delete_user::_delete_user_input::DeleteUserInput;
449
450mod _delete_user_input;
451
452mod _delete_user_output;
453
454/// Builders
455pub mod builders;