aws_sdk_codecatalyst/operation/
create_access_token.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateAccessToken`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateAccessToken;
6impl CreateAccessToken {
7    /// Creates a new `CreateAccessToken`
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::create_access_token::CreateAccessTokenInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_access_token::CreateAccessTokenOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_access_token::CreateAccessTokenError,
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::create_access_token::CreateAccessTokenError>()
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::create_access_token::CreateAccessTokenOutput>()
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::create_access_token::CreateAccessTokenInput,
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", "CreateAccessToken", 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.CreateAccessToken",
59                "rpc.service" = "CodeCatalyst",
60                "rpc.method" = "CreateAccessToken",
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 CreateAccessToken {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateAccessToken");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateAccessTokenRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateAccessTokenResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateAccessToken")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
106        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
107            "CreateAccessToken",
108            "CodeCatalyst",
109        ));
110
111        ::std::option::Option::Some(cfg.freeze())
112    }
113
114    fn runtime_components(
115        &self,
116        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
117    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
118        #[allow(unused_mut)]
119        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateAccessToken")
120            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
121            .with_interceptor(CreateAccessTokenEndpointParamsInterceptor)
122            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
123                crate::operation::create_access_token::CreateAccessTokenError,
124            >::new())
125            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
126                crate::operation::create_access_token::CreateAccessTokenError,
127            >::new())
128            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
129                crate::operation::create_access_token::CreateAccessTokenError,
130            >::new());
131
132        ::std::borrow::Cow::Owned(rcb)
133    }
134}
135
136#[derive(Debug)]
137struct CreateAccessTokenResponseDeserializer;
138impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateAccessTokenResponseDeserializer {
139    fn deserialize_nonstreaming(
140        &self,
141        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
142    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
143        let (success, status) = (response.status().is_success(), response.status().as_u16());
144        let headers = response.headers();
145        let body = response.body().bytes().expect("body loaded");
146        #[allow(unused_mut)]
147        let mut force_error = false;
148        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
149        let parse_result = if !success && status != 201 || force_error {
150            crate::protocol_serde::shape_create_access_token::de_create_access_token_http_error(status, headers, body)
151        } else {
152            crate::protocol_serde::shape_create_access_token::de_create_access_token_http_response(status, headers, body)
153        };
154        crate::protocol_serde::type_erase_result(parse_result)
155    }
156}
157#[derive(Debug)]
158struct CreateAccessTokenRequestSerializer;
159impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateAccessTokenRequestSerializer {
160    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
161    fn serialize_input(
162        &self,
163        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
164        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
165    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
166        let input = input
167            .downcast::<crate::operation::create_access_token::CreateAccessTokenInput>()
168            .expect("correct type");
169        let _header_serialization_settings = _cfg
170            .load::<crate::serialization_settings::HeaderSerializationSettings>()
171            .cloned()
172            .unwrap_or_default();
173        let mut request_builder = {
174            fn uri_base(
175                _input: &crate::operation::create_access_token::CreateAccessTokenInput,
176                output: &mut ::std::string::String,
177            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
178                use ::std::fmt::Write as _;
179                ::std::write!(output, "/v1/accessTokens").expect("formatting should succeed");
180                ::std::result::Result::Ok(())
181            }
182            #[allow(clippy::unnecessary_wraps)]
183            fn update_http_builder(
184                input: &crate::operation::create_access_token::CreateAccessTokenInput,
185                builder: ::http::request::Builder,
186            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
187                let mut uri = ::std::string::String::new();
188                uri_base(input, &mut uri)?;
189                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
190            }
191            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
192            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
193            builder
194        };
195        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_access_token::ser_create_access_token_input(&input)?);
196        if let Some(content_length) = body.content_length() {
197            let content_length = content_length.to_string();
198            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
199        }
200        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
201    }
202}
203#[derive(Debug)]
204struct CreateAccessTokenEndpointParamsInterceptor;
205
206impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateAccessTokenEndpointParamsInterceptor {
207    fn name(&self) -> &'static str {
208        "CreateAccessTokenEndpointParamsInterceptor"
209    }
210
211    fn read_before_execution(
212        &self,
213        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
214            '_,
215            ::aws_smithy_runtime_api::client::interceptors::context::Input,
216            ::aws_smithy_runtime_api::client::interceptors::context::Output,
217            ::aws_smithy_runtime_api::client::interceptors::context::Error,
218        >,
219        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
220    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
221        let _input = context
222            .input()
223            .downcast_ref::<CreateAccessTokenInput>()
224            .ok_or("failed to downcast to CreateAccessTokenInput")?;
225
226        let params = crate::config::endpoint::Params::builder()
227            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
228            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
229            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
230            .build()
231            .map_err(|err| {
232                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
233            })?;
234        cfg.interceptor_state()
235            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
236        ::std::result::Result::Ok(())
237    }
238}
239
240// The get_* functions below are generated from JMESPath expressions in the
241// operationContextParams trait. They target the operation's input shape.
242
243/// Error type for the `CreateAccessTokenError` operation.
244#[non_exhaustive]
245#[derive(::std::fmt::Debug)]
246pub enum CreateAccessTokenError {
247    /// <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>
248    AccessDeniedException(crate::types::error::AccessDeniedException),
249    /// <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>
250    ConflictException(crate::types::error::ConflictException),
251    /// <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>
252    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
253    /// <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>
254    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
255    /// <p>The request was denied due to request throttling.</p>
256    ThrottlingException(crate::types::error::ThrottlingException),
257    /// <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>
258    ValidationException(crate::types::error::ValidationException),
259    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
260    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
261    variable wildcard pattern and check `.code()`:
262     \
263    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
264     \
265    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateAccessTokenError) for what information is available for the error.")]
266    Unhandled(crate::error::sealed_unhandled::Unhandled),
267}
268impl CreateAccessTokenError {
269    /// Creates the `CreateAccessTokenError::Unhandled` variant from any error type.
270    pub fn unhandled(
271        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
272    ) -> Self {
273        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
274            source: err.into(),
275            meta: ::std::default::Default::default(),
276        })
277    }
278
279    /// Creates the `CreateAccessTokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
280    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
281        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
282            source: err.clone().into(),
283            meta: err,
284        })
285    }
286    ///
287    /// Returns error metadata, which includes the error code, message,
288    /// request ID, and potentially additional information.
289    ///
290    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
291        match self {
292            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
293            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
294            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
295            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
296            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
297            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
298            Self::Unhandled(e) => &e.meta,
299        }
300    }
301    /// Returns `true` if the error kind is `CreateAccessTokenError::AccessDeniedException`.
302    pub fn is_access_denied_exception(&self) -> bool {
303        matches!(self, Self::AccessDeniedException(_))
304    }
305    /// Returns `true` if the error kind is `CreateAccessTokenError::ConflictException`.
306    pub fn is_conflict_exception(&self) -> bool {
307        matches!(self, Self::ConflictException(_))
308    }
309    /// Returns `true` if the error kind is `CreateAccessTokenError::ResourceNotFoundException`.
310    pub fn is_resource_not_found_exception(&self) -> bool {
311        matches!(self, Self::ResourceNotFoundException(_))
312    }
313    /// Returns `true` if the error kind is `CreateAccessTokenError::ServiceQuotaExceededException`.
314    pub fn is_service_quota_exceeded_exception(&self) -> bool {
315        matches!(self, Self::ServiceQuotaExceededException(_))
316    }
317    /// Returns `true` if the error kind is `CreateAccessTokenError::ThrottlingException`.
318    pub fn is_throttling_exception(&self) -> bool {
319        matches!(self, Self::ThrottlingException(_))
320    }
321    /// Returns `true` if the error kind is `CreateAccessTokenError::ValidationException`.
322    pub fn is_validation_exception(&self) -> bool {
323        matches!(self, Self::ValidationException(_))
324    }
325}
326impl ::std::error::Error for CreateAccessTokenError {
327    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
328        match self {
329            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
330            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
331            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
332            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
333            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
334            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
335            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
336        }
337    }
338}
339impl ::std::fmt::Display for CreateAccessTokenError {
340    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
341        match self {
342            Self::AccessDeniedException(_inner) => _inner.fmt(f),
343            Self::ConflictException(_inner) => _inner.fmt(f),
344            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
345            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
346            Self::ThrottlingException(_inner) => _inner.fmt(f),
347            Self::ValidationException(_inner) => _inner.fmt(f),
348            Self::Unhandled(_inner) => {
349                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
350                    write!(f, "unhandled error ({code})")
351                } else {
352                    f.write_str("unhandled error")
353                }
354            }
355        }
356    }
357}
358impl ::aws_smithy_types::retry::ProvideErrorKind for CreateAccessTokenError {
359    fn code(&self) -> ::std::option::Option<&str> {
360        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
361    }
362    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
363        match self {
364            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
365            _ => ::std::option::Option::None,
366        }
367    }
368}
369impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateAccessTokenError {
370    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
371        match self {
372            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
373            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
374            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
375            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
376            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
377            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
378            Self::Unhandled(_inner) => &_inner.meta,
379        }
380    }
381}
382impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateAccessTokenError {
383    fn create_unhandled_error(
384        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
385        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
386    ) -> Self {
387        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
388            source,
389            meta: meta.unwrap_or_default(),
390        })
391    }
392}
393impl ::aws_types::request_id::RequestId for crate::operation::create_access_token::CreateAccessTokenError {
394    fn request_id(&self) -> Option<&str> {
395        self.meta().request_id()
396    }
397}
398
399pub use crate::operation::create_access_token::_create_access_token_output::CreateAccessTokenOutput;
400
401pub use crate::operation::create_access_token::_create_access_token_input::CreateAccessTokenInput;
402
403mod _create_access_token_input;
404
405mod _create_access_token_output;
406
407/// Builders
408pub mod builders;