aws_sdk_codecatalyst/operation/
verify_session.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `VerifySession`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct VerifySession;
6impl VerifySession {
7    /// Creates a new `VerifySession`
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::verify_session::VerifySessionInput,
14    ) -> ::std::result::Result<
15        crate::operation::verify_session::VerifySessionOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::verify_session::VerifySessionError,
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::verify_session::VerifySessionError>()
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::verify_session::VerifySessionOutput>()
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::verify_session::VerifySessionInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("CodeCatalyst", "VerifySession", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "CodeCatalyst.VerifySession",
59                "rpc.service" = "CodeCatalyst",
60                "rpc.method" = "VerifySession",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73
74        if let ::std::option::Option::Some(config_override) = config_override {
75            for plugin in config_override.runtime_plugins.iter().cloned() {
76                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
77            }
78            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
79                config_override,
80                client_config.config.clone(),
81                &client_config.runtime_components,
82            ));
83        }
84        runtime_plugins
85    }
86}
87impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for VerifySession {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("VerifySession");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            VerifySessionRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            VerifySessionResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("VerifySession")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "VerifySession",
107            "CodeCatalyst",
108        ));
109
110        ::std::option::Option::Some(cfg.freeze())
111    }
112
113    fn runtime_components(
114        &self,
115        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
116    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
117        #[allow(unused_mut)]
118        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("VerifySession")
119            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
120            .with_interceptor(VerifySessionEndpointParamsInterceptor)
121            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
122                crate::operation::verify_session::VerifySessionError,
123            >::new())
124            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
125                crate::operation::verify_session::VerifySessionError,
126            >::new())
127            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
128                crate::operation::verify_session::VerifySessionError,
129            >::new());
130
131        ::std::borrow::Cow::Owned(rcb)
132    }
133}
134
135#[derive(Debug)]
136struct VerifySessionResponseDeserializer;
137impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for VerifySessionResponseDeserializer {
138    fn deserialize_nonstreaming(
139        &self,
140        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
141    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
142        let (success, status) = (response.status().is_success(), response.status().as_u16());
143        let headers = response.headers();
144        let body = response.body().bytes().expect("body loaded");
145        #[allow(unused_mut)]
146        let mut force_error = false;
147        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
148        let parse_result = if !success && status != 200 || force_error {
149            crate::protocol_serde::shape_verify_session::de_verify_session_http_error(status, headers, body)
150        } else {
151            crate::protocol_serde::shape_verify_session::de_verify_session_http_response(status, headers, body)
152        };
153        crate::protocol_serde::type_erase_result(parse_result)
154    }
155}
156#[derive(Debug)]
157struct VerifySessionRequestSerializer;
158impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for VerifySessionRequestSerializer {
159    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
160    fn serialize_input(
161        &self,
162        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
163        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
164    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
165        let input = input
166            .downcast::<crate::operation::verify_session::VerifySessionInput>()
167            .expect("correct type");
168        let _header_serialization_settings = _cfg
169            .load::<crate::serialization_settings::HeaderSerializationSettings>()
170            .cloned()
171            .unwrap_or_default();
172        let mut request_builder = {
173            fn uri_base(
174                _input: &crate::operation::verify_session::VerifySessionInput,
175                output: &mut ::std::string::String,
176            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
177                use ::std::fmt::Write as _;
178                ::std::write!(output, "/session").expect("formatting should succeed");
179                ::std::result::Result::Ok(())
180            }
181            #[allow(clippy::unnecessary_wraps)]
182            fn update_http_builder(
183                input: &crate::operation::verify_session::VerifySessionInput,
184                builder: ::http::request::Builder,
185            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
186                let mut uri = ::std::string::String::new();
187                uri_base(input, &mut uri)?;
188                ::std::result::Result::Ok(builder.method("GET").uri(uri))
189            }
190            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
191            builder
192        };
193        let body = ::aws_smithy_types::body::SdkBody::from("");
194
195        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
196    }
197}
198#[derive(Debug)]
199struct VerifySessionEndpointParamsInterceptor;
200
201impl ::aws_smithy_runtime_api::client::interceptors::Intercept for VerifySessionEndpointParamsInterceptor {
202    fn name(&self) -> &'static str {
203        "VerifySessionEndpointParamsInterceptor"
204    }
205
206    fn read_before_execution(
207        &self,
208        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
209            '_,
210            ::aws_smithy_runtime_api::client::interceptors::context::Input,
211            ::aws_smithy_runtime_api::client::interceptors::context::Output,
212            ::aws_smithy_runtime_api::client::interceptors::context::Error,
213        >,
214        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
215    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
216        let _input = context
217            .input()
218            .downcast_ref::<VerifySessionInput>()
219            .ok_or("failed to downcast to VerifySessionInput")?;
220
221        let params = crate::config::endpoint::Params::builder()
222            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
223            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
224            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
225            .build()
226            .map_err(|err| {
227                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
228            })?;
229        cfg.interceptor_state()
230            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
231        ::std::result::Result::Ok(())
232    }
233}
234
235// The get_* functions below are generated from JMESPath expressions in the
236// operationContextParams trait. They target the operation's input shape.
237
238/// Error type for the `VerifySessionError` operation.
239#[non_exhaustive]
240#[derive(::std::fmt::Debug)]
241pub enum VerifySessionError {
242    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
243    AccessDeniedException(crate::types::error::AccessDeniedException),
244    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
245    ConflictException(crate::types::error::ConflictException),
246    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
247    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
248    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
249    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
250    /// <p>The request was denied due to request throttling.</p>
251    ThrottlingException(crate::types::error::ThrottlingException),
252    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
253    ValidationException(crate::types::error::ValidationException),
254    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
255    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
256    variable wildcard pattern and check `.code()`:
257     \
258    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
259     \
260    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-VerifySessionError) for what information is available for the error.")]
261    Unhandled(crate::error::sealed_unhandled::Unhandled),
262}
263impl VerifySessionError {
264    /// Creates the `VerifySessionError::Unhandled` variant from any error type.
265    pub fn unhandled(
266        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
267    ) -> Self {
268        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
269            source: err.into(),
270            meta: ::std::default::Default::default(),
271        })
272    }
273
274    /// Creates the `VerifySessionError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
275    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
276        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
277            source: err.clone().into(),
278            meta: err,
279        })
280    }
281    ///
282    /// Returns error metadata, which includes the error code, message,
283    /// request ID, and potentially additional information.
284    ///
285    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
286        match self {
287            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
288            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
289            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
290            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
291            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
292            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
293            Self::Unhandled(e) => &e.meta,
294        }
295    }
296    /// Returns `true` if the error kind is `VerifySessionError::AccessDeniedException`.
297    pub fn is_access_denied_exception(&self) -> bool {
298        matches!(self, Self::AccessDeniedException(_))
299    }
300    /// Returns `true` if the error kind is `VerifySessionError::ConflictException`.
301    pub fn is_conflict_exception(&self) -> bool {
302        matches!(self, Self::ConflictException(_))
303    }
304    /// Returns `true` if the error kind is `VerifySessionError::ResourceNotFoundException`.
305    pub fn is_resource_not_found_exception(&self) -> bool {
306        matches!(self, Self::ResourceNotFoundException(_))
307    }
308    /// Returns `true` if the error kind is `VerifySessionError::ServiceQuotaExceededException`.
309    pub fn is_service_quota_exceeded_exception(&self) -> bool {
310        matches!(self, Self::ServiceQuotaExceededException(_))
311    }
312    /// Returns `true` if the error kind is `VerifySessionError::ThrottlingException`.
313    pub fn is_throttling_exception(&self) -> bool {
314        matches!(self, Self::ThrottlingException(_))
315    }
316    /// Returns `true` if the error kind is `VerifySessionError::ValidationException`.
317    pub fn is_validation_exception(&self) -> bool {
318        matches!(self, Self::ValidationException(_))
319    }
320}
321impl ::std::error::Error for VerifySessionError {
322    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
323        match self {
324            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
325            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
326            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
327            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
328            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
329            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
330            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
331        }
332    }
333}
334impl ::std::fmt::Display for VerifySessionError {
335    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
336        match self {
337            Self::AccessDeniedException(_inner) => _inner.fmt(f),
338            Self::ConflictException(_inner) => _inner.fmt(f),
339            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
340            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
341            Self::ThrottlingException(_inner) => _inner.fmt(f),
342            Self::ValidationException(_inner) => _inner.fmt(f),
343            Self::Unhandled(_inner) => {
344                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
345                    write!(f, "unhandled error ({code})")
346                } else {
347                    f.write_str("unhandled error")
348                }
349            }
350        }
351    }
352}
353impl ::aws_smithy_types::retry::ProvideErrorKind for VerifySessionError {
354    fn code(&self) -> ::std::option::Option<&str> {
355        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
356    }
357    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
358        match self {
359            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
360            _ => ::std::option::Option::None,
361        }
362    }
363}
364impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for VerifySessionError {
365    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
366        match self {
367            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
368            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
369            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
370            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
371            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
372            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
373            Self::Unhandled(_inner) => &_inner.meta,
374        }
375    }
376}
377impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for VerifySessionError {
378    fn create_unhandled_error(
379        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
380        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
381    ) -> Self {
382        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
383            source,
384            meta: meta.unwrap_or_default(),
385        })
386    }
387}
388impl ::aws_types::request_id::RequestId for crate::operation::verify_session::VerifySessionError {
389    fn request_id(&self) -> Option<&str> {
390        self.meta().request_id()
391    }
392}
393
394pub use crate::operation::verify_session::_verify_session_output::VerifySessionOutput;
395
396pub use crate::operation::verify_session::_verify_session_input::VerifySessionInput;
397
398mod _verify_session_input;
399
400mod _verify_session_output;
401
402/// Builders
403pub mod builders;