aws_sdk_quicksight/operation/
update_data_set_permissions.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateDataSetPermissions`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateDataSetPermissions;
6impl UpdateDataSetPermissions {
7    /// Creates a new `UpdateDataSetPermissions`
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_data_set_permissions::UpdateDataSetPermissionsInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_data_set_permissions::UpdateDataSetPermissionsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_data_set_permissions::UpdateDataSetPermissionsError,
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_data_set_permissions::UpdateDataSetPermissionsError>()
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_data_set_permissions::UpdateDataSetPermissionsOutput>()
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_data_set_permissions::UpdateDataSetPermissionsInput,
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(
54            "quicksight",
55            "UpdateDataSetPermissions",
56            input,
57            runtime_plugins,
58            stop_point,
59        )
60        .await
61    }
62
63    pub(crate) fn operation_runtime_plugins(
64        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
65        client_config: &crate::config::Config,
66        config_override: ::std::option::Option<crate::config::Builder>,
67    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
68        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
69        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
70            ::aws_runtime::auth::sigv4::SCHEME_ID,
71        ]));
72        if let ::std::option::Option::Some(config_override) = config_override {
73            for plugin in config_override.runtime_plugins.iter().cloned() {
74                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
75            }
76            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
77                config_override,
78                client_config.config.clone(),
79                &client_config.runtime_components,
80            ));
81        }
82        runtime_plugins
83    }
84}
85impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for UpdateDataSetPermissions {
86    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
87        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateDataSetPermissions");
88
89        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
90            UpdateDataSetPermissionsRequestSerializer,
91        ));
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
93            UpdateDataSetPermissionsResponseDeserializer,
94        ));
95
96        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
97            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
101            "UpdateDataSetPermissions",
102            "quicksight",
103        ));
104        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
105        signing_options.double_uri_encode = true;
106        signing_options.content_sha256_header = false;
107        signing_options.normalize_uri_path = true;
108        signing_options.payload_override = None;
109
110        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
111            signing_options,
112            ..::std::default::Default::default()
113        });
114
115        ::std::option::Option::Some(cfg.freeze())
116    }
117
118    fn runtime_components(
119        &self,
120        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
121    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
122        #[allow(unused_mut)]
123        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("UpdateDataSetPermissions")
124            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
125            .with_interceptor(UpdateDataSetPermissionsEndpointParamsInterceptor)
126            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
127                crate::operation::update_data_set_permissions::UpdateDataSetPermissionsError,
128            >::new())
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
130                crate::operation::update_data_set_permissions::UpdateDataSetPermissionsError,
131            >::new())
132            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
133                crate::operation::update_data_set_permissions::UpdateDataSetPermissionsError,
134            >::new());
135
136        ::std::borrow::Cow::Owned(rcb)
137    }
138}
139
140#[derive(Debug)]
141struct UpdateDataSetPermissionsResponseDeserializer;
142impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateDataSetPermissionsResponseDeserializer {
143    fn deserialize_nonstreaming(
144        &self,
145        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
146    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
147        let (success, status) = (response.status().is_success(), response.status().as_u16());
148        let headers = response.headers();
149        let body = response.body().bytes().expect("body loaded");
150        #[allow(unused_mut)]
151        let mut force_error = false;
152        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
153        let parse_result = if !success && status != 200 || force_error {
154            crate::protocol_serde::shape_update_data_set_permissions::de_update_data_set_permissions_http_error(status, headers, body)
155        } else {
156            crate::protocol_serde::shape_update_data_set_permissions::de_update_data_set_permissions_http_response(status, headers, body)
157        };
158        crate::protocol_serde::type_erase_result(parse_result)
159    }
160}
161#[derive(Debug)]
162struct UpdateDataSetPermissionsRequestSerializer;
163impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateDataSetPermissionsRequestSerializer {
164    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
165    fn serialize_input(
166        &self,
167        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
168        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
169    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
170        let input = input
171            .downcast::<crate::operation::update_data_set_permissions::UpdateDataSetPermissionsInput>()
172            .expect("correct type");
173        let _header_serialization_settings = _cfg
174            .load::<crate::serialization_settings::HeaderSerializationSettings>()
175            .cloned()
176            .unwrap_or_default();
177        let mut request_builder = {
178            fn uri_base(
179                _input: &crate::operation::update_data_set_permissions::UpdateDataSetPermissionsInput,
180                output: &mut ::std::string::String,
181            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
182                use ::std::fmt::Write as _;
183                let input_1 = &_input.aws_account_id;
184                let input_1 = input_1
185                    .as_ref()
186                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("aws_account_id", "cannot be empty or unset"))?;
187                let aws_account_id = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
188                if aws_account_id.is_empty() {
189                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
190                        "aws_account_id",
191                        "cannot be empty or unset",
192                    ));
193                }
194                let input_2 = &_input.data_set_id;
195                let input_2 = input_2
196                    .as_ref()
197                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("data_set_id", "cannot be empty or unset"))?;
198                let data_set_id = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
199                if data_set_id.is_empty() {
200                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
201                        "data_set_id",
202                        "cannot be empty or unset",
203                    ));
204                }
205                ::std::write!(
206                    output,
207                    "/accounts/{AwsAccountId}/data-sets/{DataSetId}/permissions",
208                    AwsAccountId = aws_account_id,
209                    DataSetId = data_set_id
210                )
211                .expect("formatting should succeed");
212                ::std::result::Result::Ok(())
213            }
214            #[allow(clippy::unnecessary_wraps)]
215            fn update_http_builder(
216                input: &crate::operation::update_data_set_permissions::UpdateDataSetPermissionsInput,
217                builder: ::http::request::Builder,
218            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
219                let mut uri = ::std::string::String::new();
220                uri_base(input, &mut uri)?;
221                ::std::result::Result::Ok(builder.method("POST").uri(uri))
222            }
223            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
224            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
225            builder
226        };
227        let body = ::aws_smithy_types::body::SdkBody::from(
228            crate::protocol_serde::shape_update_data_set_permissions::ser_update_data_set_permissions_input(&input)?,
229        );
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 UpdateDataSetPermissionsEndpointParamsInterceptor;
239
240impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateDataSetPermissionsEndpointParamsInterceptor {
241    fn name(&self) -> &'static str {
242        "UpdateDataSetPermissionsEndpointParamsInterceptor"
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::<UpdateDataSetPermissionsInput>()
258            .ok_or("failed to downcast to UpdateDataSetPermissionsInput")?;
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 `UpdateDataSetPermissionsError` operation.
279#[non_exhaustive]
280#[derive(::std::fmt::Debug)]
281pub enum UpdateDataSetPermissionsError {
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>Updating or deleting a resource can cause an inconsistent state.</p>
285    ConflictException(crate::types::error::ConflictException),
286    /// <p>An internal failure occurred.</p>
287    InternalFailureException(crate::types::error::InternalFailureException),
288    /// <p>One or more parameters has a value that isn't valid.</p>
289    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
290    /// <p>One or more resources can't be found.</p>
291    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
292    /// <p>Access is throttled.</p>
293    ThrottlingException(crate::types::error::ThrottlingException),
294    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
295    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
296    variable wildcard pattern and check `.code()`:
297     \
298    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
299     \
300    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateDataSetPermissionsError) for what information is available for the error.")]
301    Unhandled(crate::error::sealed_unhandled::Unhandled),
302}
303impl UpdateDataSetPermissionsError {
304    /// Creates the `UpdateDataSetPermissionsError::Unhandled` variant from any error type.
305    pub fn unhandled(
306        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
307    ) -> Self {
308        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
309            source: err.into(),
310            meta: ::std::default::Default::default(),
311        })
312    }
313
314    /// Creates the `UpdateDataSetPermissionsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
315    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
316        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
317            source: err.clone().into(),
318            meta: err,
319        })
320    }
321    ///
322    /// Returns error metadata, which includes the error code, message,
323    /// request ID, and potentially additional information.
324    ///
325    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
326        match self {
327            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::Unhandled(e) => &e.meta,
334        }
335    }
336    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::AccessDeniedException`.
337    pub fn is_access_denied_exception(&self) -> bool {
338        matches!(self, Self::AccessDeniedException(_))
339    }
340    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::ConflictException`.
341    pub fn is_conflict_exception(&self) -> bool {
342        matches!(self, Self::ConflictException(_))
343    }
344    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::InternalFailureException`.
345    pub fn is_internal_failure_exception(&self) -> bool {
346        matches!(self, Self::InternalFailureException(_))
347    }
348    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::InvalidParameterValueException`.
349    pub fn is_invalid_parameter_value_exception(&self) -> bool {
350        matches!(self, Self::InvalidParameterValueException(_))
351    }
352    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::ResourceNotFoundException`.
353    pub fn is_resource_not_found_exception(&self) -> bool {
354        matches!(self, Self::ResourceNotFoundException(_))
355    }
356    /// Returns `true` if the error kind is `UpdateDataSetPermissionsError::ThrottlingException`.
357    pub fn is_throttling_exception(&self) -> bool {
358        matches!(self, Self::ThrottlingException(_))
359    }
360}
361impl ::std::error::Error for UpdateDataSetPermissionsError {
362    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
363        match self {
364            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
365            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
366            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
367            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
368            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
369            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
370            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
371        }
372    }
373}
374impl ::std::fmt::Display for UpdateDataSetPermissionsError {
375    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
376        match self {
377            Self::AccessDeniedException(_inner) => _inner.fmt(f),
378            Self::ConflictException(_inner) => _inner.fmt(f),
379            Self::InternalFailureException(_inner) => _inner.fmt(f),
380            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
381            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
382            Self::ThrottlingException(_inner) => _inner.fmt(f),
383            Self::Unhandled(_inner) => {
384                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
385                    write!(f, "unhandled error ({code})")
386                } else {
387                    f.write_str("unhandled error")
388                }
389            }
390        }
391    }
392}
393impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateDataSetPermissionsError {
394    fn code(&self) -> ::std::option::Option<&str> {
395        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
396    }
397    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
398        ::std::option::Option::None
399    }
400}
401impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateDataSetPermissionsError {
402    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
403        match self {
404            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
405            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
406            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
407            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
408            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
409            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
410            Self::Unhandled(_inner) => &_inner.meta,
411        }
412    }
413}
414impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UpdateDataSetPermissionsError {
415    fn create_unhandled_error(
416        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
417        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
418    ) -> Self {
419        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
420            source,
421            meta: meta.unwrap_or_default(),
422        })
423    }
424}
425impl ::aws_types::request_id::RequestId for crate::operation::update_data_set_permissions::UpdateDataSetPermissionsError {
426    fn request_id(&self) -> Option<&str> {
427        self.meta().request_id()
428    }
429}
430
431pub use crate::operation::update_data_set_permissions::_update_data_set_permissions_output::UpdateDataSetPermissionsOutput;
432
433pub use crate::operation::update_data_set_permissions::_update_data_set_permissions_input::UpdateDataSetPermissionsInput;
434
435mod _update_data_set_permissions_input;
436
437mod _update_data_set_permissions_output;
438
439/// Builders
440pub mod builders;