aws_sdk_quicksight/operation/
update_identity_propagation_config.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateIdentityPropagationConfig`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateIdentityPropagationConfig;
6impl UpdateIdentityPropagationConfig {
7    /// Creates a new `UpdateIdentityPropagationConfig`
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::update_identity_propagation_config::UpdateIdentityPropagationConfigInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigError,
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::update_identity_propagation_config::UpdateIdentityPropagationConfigError>()
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::update_identity_propagation_config::UpdateIdentityPropagationConfigOutput>()
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::update_identity_propagation_config::UpdateIdentityPropagationConfigInput,
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            "QuickSight",
56            "UpdateIdentityPropagationConfig",
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            "QuickSight.UpdateIdentityPropagationConfig",
65            "rpc.service" = "QuickSight",
66            "rpc.method" = "UpdateIdentityPropagationConfig",
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 UpdateIdentityPropagationConfig {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateIdentityPropagationConfig");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            UpdateIdentityPropagationConfigRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            UpdateIdentityPropagationConfigResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("UpdateIdentityPropagationConfig")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "UpdateIdentityPropagationConfig",
113            "QuickSight",
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("UpdateIdentityPropagationConfig")
135            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
136            .with_interceptor(UpdateIdentityPropagationConfigEndpointParamsInterceptor)
137            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
138                crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigError,
139            >::new())
140            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
141                crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigError,
142            >::new())
143            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
144                crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigError,
145            >::new());
146
147        ::std::borrow::Cow::Owned(rcb)
148    }
149}
150
151#[derive(Debug)]
152struct UpdateIdentityPropagationConfigResponseDeserializer;
153impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateIdentityPropagationConfigResponseDeserializer {
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_update_identity_propagation_config::de_update_identity_propagation_config_http_error(status, headers, body)
166        } else {
167            crate::protocol_serde::shape_update_identity_propagation_config::de_update_identity_propagation_config_http_response(
168                status, headers, body,
169            )
170        };
171        crate::protocol_serde::type_erase_result(parse_result)
172    }
173}
174#[derive(Debug)]
175struct UpdateIdentityPropagationConfigRequestSerializer;
176impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateIdentityPropagationConfigRequestSerializer {
177    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
178    fn serialize_input(
179        &self,
180        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
181        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
182    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
183        let input = input
184            .downcast::<crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigInput>()
185            .expect("correct type");
186        let _header_serialization_settings = _cfg
187            .load::<crate::serialization_settings::HeaderSerializationSettings>()
188            .cloned()
189            .unwrap_or_default();
190        let mut request_builder = {
191            fn uri_base(
192                _input: &crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigInput,
193                output: &mut ::std::string::String,
194            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
195                use ::std::fmt::Write as _;
196                let input_1 = &_input.aws_account_id;
197                let input_1 = input_1
198                    .as_ref()
199                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
200                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
201                if aws_account_id.is_empty() {
202                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
203                        "aws_account_id",
204                        "cannot be empty or unset",
205                    ));
206                }
207                let input_2 = &_input.service;
208                let input_2 = input_2
209                    .as_ref()
210                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("service", "cannot be empty or unset"))?;
211                let service = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
212                if service.is_empty() {
213                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
214                        "service",
215                        "cannot be empty or unset",
216                    ));
217                }
218                ::std::write!(
219                    output,
220                    "/accounts/{AwsAccountId}/identity-propagation-config/{Service}",
221                    AwsAccountId = aws_account_id,
222                    Service = service
223                )
224                .expect("formatting should succeed");
225                ::std::result::Result::Ok(())
226            }
227            #[allow(clippy::unnecessary_wraps)]
228            fn update_http_builder(
229                input: &crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigInput,
230                builder: ::http::request::Builder,
231            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
232                let mut uri = ::std::string::String::new();
233                uri_base(input, &mut uri)?;
234                ::std::result::Result::Ok(builder.method("POST").uri(uri))
235            }
236            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
237            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
238            builder
239        };
240        let body = ::aws_smithy_types::body::SdkBody::from(
241            crate::protocol_serde::shape_update_identity_propagation_config::ser_update_identity_propagation_config_input(&input)?,
242        );
243        if let Some(content_length) = body.content_length() {
244            let content_length = content_length.to_string();
245            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
246        }
247        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
248    }
249}
250#[derive(Debug)]
251struct UpdateIdentityPropagationConfigEndpointParamsInterceptor;
252
253impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateIdentityPropagationConfigEndpointParamsInterceptor {
254    fn name(&self) -> &'static str {
255        "UpdateIdentityPropagationConfigEndpointParamsInterceptor"
256    }
257
258    fn read_before_execution(
259        &self,
260        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
261            '_,
262            ::aws_smithy_runtime_api::client::interceptors::context::Input,
263            ::aws_smithy_runtime_api::client::interceptors::context::Output,
264            ::aws_smithy_runtime_api::client::interceptors::context::Error,
265        >,
266        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
267    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
268        let _input = context
269            .input()
270            .downcast_ref::<UpdateIdentityPropagationConfigInput>()
271            .ok_or("failed to downcast to UpdateIdentityPropagationConfigInput")?;
272
273        let params = crate::config::endpoint::Params::builder()
274            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
275            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
276            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
277            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
278            .build()
279            .map_err(|err| {
280                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
281            })?;
282        cfg.interceptor_state()
283            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
284        ::std::result::Result::Ok(())
285    }
286}
287
288// The get_* functions below are generated from JMESPath expressions in the
289// operationContextParams trait. They target the operation's input shape.
290
291/// Error type for the `UpdateIdentityPropagationConfigError` operation.
292#[non_exhaustive]
293#[derive(::std::fmt::Debug)]
294pub enum UpdateIdentityPropagationConfigError {
295    /// <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>
296    AccessDeniedException(crate::types::error::AccessDeniedException),
297    /// <p>An internal failure occurred.</p>
298    InternalFailureException(crate::types::error::InternalFailureException),
299    /// <p>One or more parameters has a value that isn't valid.</p>
300    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
301    /// <p>One or more resources can't be found.</p>
302    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
303    /// <p>Access is throttled.</p>
304    ThrottlingException(crate::types::error::ThrottlingException),
305    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
306    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
307    variable wildcard pattern and check `.code()`:
308     \
309    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
310     \
311    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateIdentityPropagationConfigError) for what information is available for the error.")]
312    Unhandled(crate::error::sealed_unhandled::Unhandled),
313}
314impl UpdateIdentityPropagationConfigError {
315    /// Creates the `UpdateIdentityPropagationConfigError::Unhandled` variant from any error type.
316    pub fn unhandled(
317        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
318    ) -> Self {
319        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
320            source: err.into(),
321            meta: ::std::default::Default::default(),
322        })
323    }
324
325    /// Creates the `UpdateIdentityPropagationConfigError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
326    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
327        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
328            source: err.clone().into(),
329            meta: err,
330        })
331    }
332    ///
333    /// Returns error metadata, which includes the error code, message,
334    /// request ID, and potentially additional information.
335    ///
336    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
337        match self {
338            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::Unhandled(e) => &e.meta,
344        }
345    }
346    /// Returns `true` if the error kind is `UpdateIdentityPropagationConfigError::AccessDeniedException`.
347    pub fn is_access_denied_exception(&self) -> bool {
348        matches!(self, Self::AccessDeniedException(_))
349    }
350    /// Returns `true` if the error kind is `UpdateIdentityPropagationConfigError::InternalFailureException`.
351    pub fn is_internal_failure_exception(&self) -> bool {
352        matches!(self, Self::InternalFailureException(_))
353    }
354    /// Returns `true` if the error kind is `UpdateIdentityPropagationConfigError::InvalidParameterValueException`.
355    pub fn is_invalid_parameter_value_exception(&self) -> bool {
356        matches!(self, Self::InvalidParameterValueException(_))
357    }
358    /// Returns `true` if the error kind is `UpdateIdentityPropagationConfigError::ResourceNotFoundException`.
359    pub fn is_resource_not_found_exception(&self) -> bool {
360        matches!(self, Self::ResourceNotFoundException(_))
361    }
362    /// Returns `true` if the error kind is `UpdateIdentityPropagationConfigError::ThrottlingException`.
363    pub fn is_throttling_exception(&self) -> bool {
364        matches!(self, Self::ThrottlingException(_))
365    }
366}
367impl ::std::error::Error for UpdateIdentityPropagationConfigError {
368    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
369        match self {
370            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
371            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
372            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
373            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
374            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
375            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
376        }
377    }
378}
379impl ::std::fmt::Display for UpdateIdentityPropagationConfigError {
380    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
381        match self {
382            Self::AccessDeniedException(_inner) => _inner.fmt(f),
383            Self::InternalFailureException(_inner) => _inner.fmt(f),
384            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
385            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
386            Self::ThrottlingException(_inner) => _inner.fmt(f),
387            Self::Unhandled(_inner) => {
388                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
389                    write!(f, "unhandled error ({code})")
390                } else {
391                    f.write_str("unhandled error")
392                }
393            }
394        }
395    }
396}
397impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateIdentityPropagationConfigError {
398    fn code(&self) -> ::std::option::Option<&str> {
399        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
400    }
401    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
402        ::std::option::Option::None
403    }
404}
405impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateIdentityPropagationConfigError {
406    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
407        match self {
408            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
409            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
410            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
411            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
412            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
413            Self::Unhandled(_inner) => &_inner.meta,
414        }
415    }
416}
417impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UpdateIdentityPropagationConfigError {
418    fn create_unhandled_error(
419        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
420        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
421    ) -> Self {
422        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
423            source,
424            meta: meta.unwrap_or_default(),
425        })
426    }
427}
428impl ::aws_types::request_id::RequestId for crate::operation::update_identity_propagation_config::UpdateIdentityPropagationConfigError {
429    fn request_id(&self) -> Option<&str> {
430        self.meta().request_id()
431    }
432}
433
434pub use crate::operation::update_identity_propagation_config::_update_identity_propagation_config_output::UpdateIdentityPropagationConfigOutput;
435
436pub use crate::operation::update_identity_propagation_config::_update_identity_propagation_config_input::UpdateIdentityPropagationConfigInput;
437
438mod _update_identity_propagation_config_input;
439
440mod _update_identity_propagation_config_output;
441
442/// Builders
443pub mod builders;