aws_sdk_quicksight/operation/
update_group.rs

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