aws_sdk_quicksight/operation/
describe_ip_restriction.rs

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