aws_sdk_quicksight/operation/
predict_qa_results.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `PredictQAResults`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct PredictQAResults;
6impl PredictQAResults {
7    /// Creates a new `PredictQAResults`
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::predict_qa_results::PredictQaResultsInput,
14    ) -> ::std::result::Result<
15        crate::operation::predict_qa_results::PredictQaResultsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::predict_qa_results::PredictQAResultsError,
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::predict_qa_results::PredictQAResultsError>()
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::predict_qa_results::PredictQaResultsOutput>()
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::predict_qa_results::PredictQaResultsInput,
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", "PredictQAResults", 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 PredictQAResults {
79    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
80        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("PredictQAResults");
81
82        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
83            PredictQAResultsRequestSerializer,
84        ));
85        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
86            PredictQAResultsResponseDeserializer,
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::SensitiveOutput);
94        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
95            "PredictQAResults",
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("PredictQAResults")
118            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
119            .with_interceptor(PredictQAResultsEndpointParamsInterceptor)
120            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
121                crate::operation::predict_qa_results::PredictQAResultsError,
122            >::new())
123            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
124                crate::operation::predict_qa_results::PredictQAResultsError,
125            >::new())
126            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
127                crate::operation::predict_qa_results::PredictQAResultsError,
128            >::new());
129
130        ::std::borrow::Cow::Owned(rcb)
131    }
132}
133
134#[derive(Debug)]
135struct PredictQAResultsResponseDeserializer;
136impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for PredictQAResultsResponseDeserializer {
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_predict_qa_results::de_predict_qa_results_http_error(status, headers, body)
149        } else {
150            crate::protocol_serde::shape_predict_qa_results::de_predict_qa_results_http_response(status, headers, body)
151        };
152        crate::protocol_serde::type_erase_result(parse_result)
153    }
154}
155#[derive(Debug)]
156struct PredictQAResultsRequestSerializer;
157impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for PredictQAResultsRequestSerializer {
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::predict_qa_results::PredictQaResultsInput>()
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::predict_qa_results::PredictQaResultsInput,
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}/qa/predict", 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::predict_qa_results::PredictQaResultsInput,
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("POST").uri(uri))
199            }
200            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
201            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
202            builder
203        };
204        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_predict_qa_results::ser_predict_qa_results_input(&input)?);
205        if let Some(content_length) = body.content_length() {
206            let content_length = content_length.to_string();
207            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
208        }
209        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
210    }
211}
212#[derive(Debug)]
213struct PredictQAResultsEndpointParamsInterceptor;
214
215impl ::aws_smithy_runtime_api::client::interceptors::Intercept for PredictQAResultsEndpointParamsInterceptor {
216    fn name(&self) -> &'static str {
217        "PredictQAResultsEndpointParamsInterceptor"
218    }
219
220    fn read_before_execution(
221        &self,
222        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
223            '_,
224            ::aws_smithy_runtime_api::client::interceptors::context::Input,
225            ::aws_smithy_runtime_api::client::interceptors::context::Output,
226            ::aws_smithy_runtime_api::client::interceptors::context::Error,
227        >,
228        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
229    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
230        let _input = context
231            .input()
232            .downcast_ref::<PredictQaResultsInput>()
233            .ok_or("failed to downcast to PredictQaResultsInput")?;
234
235        let params = crate::config::endpoint::Params::builder()
236            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
237            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
238            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
239            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
240            .build()
241            .map_err(|err| {
242                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
243            })?;
244        cfg.interceptor_state()
245            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
246        ::std::result::Result::Ok(())
247    }
248}
249
250// The get_* functions below are generated from JMESPath expressions in the
251// operationContextParams trait. They target the operation's input shape.
252
253/// Error type for the `PredictQAResultsError` operation.
254#[non_exhaustive]
255#[derive(::std::fmt::Debug)]
256pub enum PredictQAResultsError {
257    /// <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>
258    AccessDeniedException(crate::types::error::AccessDeniedException),
259    /// <p>An internal failure occurred.</p>
260    InternalFailureException(crate::types::error::InternalFailureException),
261    /// <p>One or more parameters has a value that isn't valid.</p>
262    InvalidParameterValueException(crate::types::error::InvalidParameterValueException),
263    /// <p>Access is throttled.</p>
264    ThrottlingException(crate::types::error::ThrottlingException),
265    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
266    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
267    variable wildcard pattern and check `.code()`:
268     \
269    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
270     \
271    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-PredictQAResultsError) for what information is available for the error.")]
272    Unhandled(crate::error::sealed_unhandled::Unhandled),
273}
274impl PredictQAResultsError {
275    /// Creates the `PredictQAResultsError::Unhandled` variant from any error type.
276    pub fn unhandled(
277        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
278    ) -> Self {
279        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
280            source: err.into(),
281            meta: ::std::default::Default::default(),
282        })
283    }
284
285    /// Creates the `PredictQAResultsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
286    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
287        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
288            source: err.clone().into(),
289            meta: err,
290        })
291    }
292    ///
293    /// Returns error metadata, which includes the error code, message,
294    /// request ID, and potentially additional information.
295    ///
296    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
297        match self {
298            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
299            Self::InternalFailureException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
300            Self::InvalidParameterValueException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
301            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
302            Self::Unhandled(e) => &e.meta,
303        }
304    }
305    /// Returns `true` if the error kind is `PredictQAResultsError::AccessDeniedException`.
306    pub fn is_access_denied_exception(&self) -> bool {
307        matches!(self, Self::AccessDeniedException(_))
308    }
309    /// Returns `true` if the error kind is `PredictQAResultsError::InternalFailureException`.
310    pub fn is_internal_failure_exception(&self) -> bool {
311        matches!(self, Self::InternalFailureException(_))
312    }
313    /// Returns `true` if the error kind is `PredictQAResultsError::InvalidParameterValueException`.
314    pub fn is_invalid_parameter_value_exception(&self) -> bool {
315        matches!(self, Self::InvalidParameterValueException(_))
316    }
317    /// Returns `true` if the error kind is `PredictQAResultsError::ThrottlingException`.
318    pub fn is_throttling_exception(&self) -> bool {
319        matches!(self, Self::ThrottlingException(_))
320    }
321}
322impl ::std::error::Error for PredictQAResultsError {
323    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
324        match self {
325            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
326            Self::InternalFailureException(_inner) => ::std::option::Option::Some(_inner),
327            Self::InvalidParameterValueException(_inner) => ::std::option::Option::Some(_inner),
328            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
329            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
330        }
331    }
332}
333impl ::std::fmt::Display for PredictQAResultsError {
334    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
335        match self {
336            Self::AccessDeniedException(_inner) => _inner.fmt(f),
337            Self::InternalFailureException(_inner) => _inner.fmt(f),
338            Self::InvalidParameterValueException(_inner) => _inner.fmt(f),
339            Self::ThrottlingException(_inner) => _inner.fmt(f),
340            Self::Unhandled(_inner) => {
341                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
342                    write!(f, "unhandled error ({code})")
343                } else {
344                    f.write_str("unhandled error")
345                }
346            }
347        }
348    }
349}
350impl ::aws_smithy_types::retry::ProvideErrorKind for PredictQAResultsError {
351    fn code(&self) -> ::std::option::Option<&str> {
352        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
353    }
354    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
355        ::std::option::Option::None
356    }
357}
358impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for PredictQAResultsError {
359    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
360        match self {
361            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
362            Self::InternalFailureException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
363            Self::InvalidParameterValueException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
364            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
365            Self::Unhandled(_inner) => &_inner.meta,
366        }
367    }
368}
369impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for PredictQAResultsError {
370    fn create_unhandled_error(
371        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
372        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
373    ) -> Self {
374        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
375            source,
376            meta: meta.unwrap_or_default(),
377        })
378    }
379}
380impl ::aws_types::request_id::RequestId for crate::operation::predict_qa_results::PredictQAResultsError {
381    fn request_id(&self) -> Option<&str> {
382        self.meta().request_id()
383    }
384}
385
386pub use crate::operation::predict_qa_results::_predict_qa_results_output::PredictQaResultsOutput;
387
388pub use crate::operation::predict_qa_results::_predict_qa_results_input::PredictQaResultsInput;
389
390mod _predict_qa_results_input;
391
392mod _predict_qa_results_output;
393
394/// Builders
395pub mod builders;