aws_sdk_iam/operation/
delete_login_profile.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteLoginProfile`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteLoginProfile;
6impl DeleteLoginProfile {
7    /// Creates a new `DeleteLoginProfile`
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_login_profile::DeleteLoginProfileInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_login_profile::DeleteLoginProfileOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_login_profile::DeleteLoginProfileError,
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_login_profile::DeleteLoginProfileError>()
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_login_profile::DeleteLoginProfileOutput>()
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_login_profile::DeleteLoginProfileInput,
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("iam", "DeleteLoginProfile", input, runtime_plugins, stop_point).await
54    }
55
56    pub(crate) fn operation_runtime_plugins(
57        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
58        client_config: &crate::config::Config,
59        config_override: ::std::option::Option<crate::config::Builder>,
60    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
61        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
62        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
63            ::aws_runtime::auth::sigv4::SCHEME_ID,
64        ]));
65        if let ::std::option::Option::Some(config_override) = config_override {
66            for plugin in config_override.runtime_plugins.iter().cloned() {
67                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
68            }
69            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
70                config_override,
71                client_config.config.clone(),
72                &client_config.runtime_components,
73            ));
74        }
75        runtime_plugins
76    }
77}
78impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DeleteLoginProfile {
79    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
80        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteLoginProfile");
81
82        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
83            DeleteLoginProfileRequestSerializer,
84        ));
85        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
86            DeleteLoginProfileResponseDeserializer,
87        ));
88
89        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
90            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
91        ));
92
93        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("DeleteLoginProfile", "iam"));
94        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
95        signing_options.double_uri_encode = true;
96        signing_options.content_sha256_header = false;
97        signing_options.normalize_uri_path = true;
98        signing_options.payload_override = None;
99
100        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
101            signing_options,
102            ..::std::default::Default::default()
103        });
104
105        ::std::option::Option::Some(cfg.freeze())
106    }
107
108    fn runtime_components(
109        &self,
110        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
111    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
112        #[allow(unused_mut)]
113        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteLoginProfile")
114            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
115            .with_interceptor(DeleteLoginProfileEndpointParamsInterceptor)
116            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
117                crate::operation::delete_login_profile::DeleteLoginProfileError,
118            >::new())
119            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
120                crate::operation::delete_login_profile::DeleteLoginProfileError,
121            >::new())
122            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
123                crate::operation::delete_login_profile::DeleteLoginProfileError,
124            >::new());
125
126        ::std::borrow::Cow::Owned(rcb)
127    }
128}
129
130#[derive(Debug)]
131struct DeleteLoginProfileResponseDeserializer;
132impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteLoginProfileResponseDeserializer {
133    fn deserialize_nonstreaming(
134        &self,
135        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
136    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
137        let (success, status) = (response.status().is_success(), response.status().as_u16());
138        let headers = response.headers();
139        let body = response.body().bytes().expect("body loaded");
140        #[allow(unused_mut)]
141        let mut force_error = false;
142        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
143        let parse_result = if !success && status != 200 || force_error {
144            crate::protocol_serde::shape_delete_login_profile::de_delete_login_profile_http_error(status, headers, body)
145        } else {
146            crate::protocol_serde::shape_delete_login_profile::de_delete_login_profile_http_response(status, headers, body)
147        };
148        crate::protocol_serde::type_erase_result(parse_result)
149    }
150}
151#[derive(Debug)]
152struct DeleteLoginProfileRequestSerializer;
153impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteLoginProfileRequestSerializer {
154    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
155    fn serialize_input(
156        &self,
157        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
158        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
159    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
160        let input = input
161            .downcast::<crate::operation::delete_login_profile::DeleteLoginProfileInput>()
162            .expect("correct type");
163        let _header_serialization_settings = _cfg
164            .load::<crate::serialization_settings::HeaderSerializationSettings>()
165            .cloned()
166            .unwrap_or_default();
167        let mut request_builder = {
168            fn uri_base(
169                _input: &crate::operation::delete_login_profile::DeleteLoginProfileInput,
170                output: &mut ::std::string::String,
171            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
172                use ::std::fmt::Write as _;
173                ::std::write!(output, "/").expect("formatting should succeed");
174                ::std::result::Result::Ok(())
175            }
176            #[allow(clippy::unnecessary_wraps)]
177            fn update_http_builder(
178                input: &crate::operation::delete_login_profile::DeleteLoginProfileInput,
179                builder: ::http::request::Builder,
180            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
181                let mut uri = ::std::string::String::new();
182                uri_base(input, &mut uri)?;
183                ::std::result::Result::Ok(builder.method("POST").uri(uri))
184            }
185            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
186            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
187            builder
188        };
189        let body = ::aws_smithy_types::body::SdkBody::from(
190            crate::protocol_serde::shape_delete_login_profile_input::ser_delete_login_profile_input_input_input(&input)?,
191        );
192        if let Some(content_length) = body.content_length() {
193            let content_length = content_length.to_string();
194            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
195        }
196        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
197    }
198}
199#[derive(Debug)]
200struct DeleteLoginProfileEndpointParamsInterceptor;
201
202impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteLoginProfileEndpointParamsInterceptor {
203    fn name(&self) -> &'static str {
204        "DeleteLoginProfileEndpointParamsInterceptor"
205    }
206
207    fn read_before_execution(
208        &self,
209        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
210            '_,
211            ::aws_smithy_runtime_api::client::interceptors::context::Input,
212            ::aws_smithy_runtime_api::client::interceptors::context::Output,
213            ::aws_smithy_runtime_api::client::interceptors::context::Error,
214        >,
215        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
216    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
217        let _input = context
218            .input()
219            .downcast_ref::<DeleteLoginProfileInput>()
220            .ok_or("failed to downcast to DeleteLoginProfileInput")?;
221
222        let params = crate::config::endpoint::Params::builder()
223            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
224            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
225            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
226            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
227            .build()
228            .map_err(|err| {
229                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
230            })?;
231        cfg.interceptor_state()
232            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
233        ::std::result::Result::Ok(())
234    }
235}
236
237// The get_* functions below are generated from JMESPath expressions in the
238// operationContextParams trait. They target the operation's input shape.
239
240/// Error type for the `DeleteLoginProfileError` operation.
241#[non_exhaustive]
242#[derive(::std::fmt::Debug)]
243pub enum DeleteLoginProfileError {
244    /// <p>The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.</p>
245    EntityTemporarilyUnmodifiableException(crate::types::error::EntityTemporarilyUnmodifiableException),
246    /// <p>The request was rejected because it attempted to create resources beyond the current Amazon Web Services account limits. The error message describes the limit exceeded.</p>
247    LimitExceededException(crate::types::error::LimitExceededException),
248    /// <p>The request was rejected because it referenced a resource entity that does not exist. The error message describes the resource.</p>
249    NoSuchEntityException(crate::types::error::NoSuchEntityException),
250    /// <p>The request processing has failed because of an unknown error, exception or failure.</p>
251    ServiceFailureException(crate::types::error::ServiceFailureException),
252    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
253    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
254    variable wildcard pattern and check `.code()`:
255     \
256    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
257     \
258    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteLoginProfileError) for what information is available for the error.")]
259    Unhandled(crate::error::sealed_unhandled::Unhandled),
260}
261impl DeleteLoginProfileError {
262    /// Creates the `DeleteLoginProfileError::Unhandled` variant from any error type.
263    pub fn unhandled(
264        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
265    ) -> Self {
266        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
267            source: err.into(),
268            meta: ::std::default::Default::default(),
269        })
270    }
271
272    /// Creates the `DeleteLoginProfileError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
273    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
274        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
275            source: err.clone().into(),
276            meta: err,
277        })
278    }
279    ///
280    /// Returns error metadata, which includes the error code, message,
281    /// request ID, and potentially additional information.
282    ///
283    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
284        match self {
285            Self::EntityTemporarilyUnmodifiableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
286            Self::LimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
287            Self::NoSuchEntityException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
288            Self::ServiceFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
289            Self::Unhandled(e) => &e.meta,
290        }
291    }
292    /// Returns `true` if the error kind is `DeleteLoginProfileError::EntityTemporarilyUnmodifiableException`.
293    pub fn is_entity_temporarily_unmodifiable_exception(&self) -> bool {
294        matches!(self, Self::EntityTemporarilyUnmodifiableException(_))
295    }
296    /// Returns `true` if the error kind is `DeleteLoginProfileError::LimitExceededException`.
297    pub fn is_limit_exceeded_exception(&self) -> bool {
298        matches!(self, Self::LimitExceededException(_))
299    }
300    /// Returns `true` if the error kind is `DeleteLoginProfileError::NoSuchEntityException`.
301    pub fn is_no_such_entity_exception(&self) -> bool {
302        matches!(self, Self::NoSuchEntityException(_))
303    }
304    /// Returns `true` if the error kind is `DeleteLoginProfileError::ServiceFailureException`.
305    pub fn is_service_failure_exception(&self) -> bool {
306        matches!(self, Self::ServiceFailureException(_))
307    }
308}
309impl ::std::error::Error for DeleteLoginProfileError {
310    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
311        match self {
312            Self::EntityTemporarilyUnmodifiableException(_inner) => ::std::option::Option::Some(_inner),
313            Self::LimitExceededException(_inner) => ::std::option::Option::Some(_inner),
314            Self::NoSuchEntityException(_inner) => ::std::option::Option::Some(_inner),
315            Self::ServiceFailureException(_inner) => ::std::option::Option::Some(_inner),
316            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
317        }
318    }
319}
320impl ::std::fmt::Display for DeleteLoginProfileError {
321    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
322        match self {
323            Self::EntityTemporarilyUnmodifiableException(_inner) => _inner.fmt(f),
324            Self::LimitExceededException(_inner) => _inner.fmt(f),
325            Self::NoSuchEntityException(_inner) => _inner.fmt(f),
326            Self::ServiceFailureException(_inner) => _inner.fmt(f),
327            Self::Unhandled(_inner) => {
328                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
329                    write!(f, "unhandled error ({code})")
330                } else {
331                    f.write_str("unhandled error")
332                }
333            }
334        }
335    }
336}
337impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteLoginProfileError {
338    fn code(&self) -> ::std::option::Option<&str> {
339        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
340    }
341    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
342        ::std::option::Option::None
343    }
344}
345impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteLoginProfileError {
346    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
347        match self {
348            Self::EntityTemporarilyUnmodifiableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
349            Self::LimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
350            Self::NoSuchEntityException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
351            Self::ServiceFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
352            Self::Unhandled(_inner) => &_inner.meta,
353        }
354    }
355}
356impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteLoginProfileError {
357    fn create_unhandled_error(
358        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
359        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
360    ) -> Self {
361        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
362            source,
363            meta: meta.unwrap_or_default(),
364        })
365    }
366}
367impl ::aws_types::request_id::RequestId for crate::operation::delete_login_profile::DeleteLoginProfileError {
368    fn request_id(&self) -> Option<&str> {
369        self.meta().request_id()
370    }
371}
372
373pub use crate::operation::delete_login_profile::_delete_login_profile_output::DeleteLoginProfileOutput;
374
375pub use crate::operation::delete_login_profile::_delete_login_profile_input::DeleteLoginProfileInput;
376
377mod _delete_login_profile_input;
378
379mod _delete_login_profile_output;
380
381/// Builders
382pub mod builders;