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        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_smithy_runtime_api::client::auth::http::HTTP_BEARER_AUTH_SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateAccessToken {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateAccessToken");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            CreateAccessTokenRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            CreateAccessTokenResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "CreateAccessToken",
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("CreateAccessToken")
119            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
120            .with_interceptor(CreateAccessTokenEndpointParamsInterceptor)
121            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
122                crate::operation::create_access_token::CreateAccessTokenError,
123            >::new())
124            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
125                crate::operation::create_access_token::CreateAccessTokenError,
126            >::new())
127            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
128                crate::operation::create_access_token::CreateAccessTokenError,
129            >::new());
130
131        ::std::borrow::Cow::Owned(rcb)
132    }
133}
134
135#[derive(Debug)]
136struct CreateAccessTokenResponseDeserializer;
137impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateAccessTokenResponseDeserializer {
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 != 201 || force_error {
149            crate::protocol_serde::shape_create_access_token::de_create_access_token_http_error(status, headers, body)
150        } else {
151            crate::protocol_serde::shape_create_access_token::de_create_access_token_http_response(status, headers, body)
152        };
153        crate::protocol_serde::type_erase_result(parse_result)
154    }
155}
156#[derive(Debug)]
157struct CreateAccessTokenRequestSerializer;
158impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateAccessTokenRequestSerializer {
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::create_access_token::CreateAccessTokenInput>()
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::create_access_token::CreateAccessTokenInput,
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, "/v1/accessTokens").expect("formatting should succeed");
179                ::std::result::Result::Ok(())
180            }
181            #[allow(clippy::unnecessary_wraps)]
182            fn update_http_builder(
183                input: &crate::operation::create_access_token::CreateAccessTokenInput,
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("PUT").uri(uri))
189            }
190            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
191            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
192            builder
193        };
194        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_access_token::ser_create_access_token_input(&input)?);
195        if let Some(content_length) = body.content_length() {
196            let content_length = content_length.to_string();
197            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
198        }
199        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
200    }
201}
202#[derive(Debug)]
203struct CreateAccessTokenEndpointParamsInterceptor;
204
205impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateAccessTokenEndpointParamsInterceptor {
206    fn name(&self) -> &'static str {
207        "CreateAccessTokenEndpointParamsInterceptor"
208    }
209
210    fn read_before_execution(
211        &self,
212        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
213            '_,
214            ::aws_smithy_runtime_api::client::interceptors::context::Input,
215            ::aws_smithy_runtime_api::client::interceptors::context::Output,
216            ::aws_smithy_runtime_api::client::interceptors::context::Error,
217        >,
218        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
219    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
220        let _input = context
221            .input()
222            .downcast_ref::<CreateAccessTokenInput>()
223            .ok_or("failed to downcast to CreateAccessTokenInput")?;
224
225        let params = crate::config::endpoint::Params::builder()
226            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
227            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
228            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
229            .build()
230            .map_err(|err| {
231                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
232            })?;
233        cfg.interceptor_state()
234            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
235        ::std::result::Result::Ok(())
236    }
237}
238
239// The get_* functions below are generated from JMESPath expressions in the
240// operationContextParams trait. They target the operation's input shape.
241
242/// Error type for the `CreateAccessTokenError` operation.
243#[non_exhaustive]
244#[derive(::std::fmt::Debug)]
245pub enum CreateAccessTokenError {
246    /// <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>
247    AccessDeniedException(crate::types::error::AccessDeniedException),
248    /// <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>
249    ConflictException(crate::types::error::ConflictException),
250    /// <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>
251    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
252    /// <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>
253    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
254    /// <p>The request was denied due to request throttling.</p>
255    ThrottlingException(crate::types::error::ThrottlingException),
256    /// <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>
257    ValidationException(crate::types::error::ValidationException),
258    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
259    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
260    variable wildcard pattern and check `.code()`:
261     \
262    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
263     \
264    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateAccessTokenError) for what information is available for the error.")]
265    Unhandled(crate::error::sealed_unhandled::Unhandled),
266}
267impl CreateAccessTokenError {
268    /// Creates the `CreateAccessTokenError::Unhandled` variant from any error type.
269    pub fn unhandled(
270        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
271    ) -> Self {
272        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
273            source: err.into(),
274            meta: ::std::default::Default::default(),
275        })
276    }
277
278    /// Creates the `CreateAccessTokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
279    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
280        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
281            source: err.clone().into(),
282            meta: err,
283        })
284    }
285    ///
286    /// Returns error metadata, which includes the error code, message,
287    /// request ID, and potentially additional information.
288    ///
289    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
290        match self {
291            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
292            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
293            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
294            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
295            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
296            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
297            Self::Unhandled(e) => &e.meta,
298        }
299    }
300    /// Returns `true` if the error kind is `CreateAccessTokenError::AccessDeniedException`.
301    pub fn is_access_denied_exception(&self) -> bool {
302        matches!(self, Self::AccessDeniedException(_))
303    }
304    /// Returns `true` if the error kind is `CreateAccessTokenError::ConflictException`.
305    pub fn is_conflict_exception(&self) -> bool {
306        matches!(self, Self::ConflictException(_))
307    }
308    /// Returns `true` if the error kind is `CreateAccessTokenError::ResourceNotFoundException`.
309    pub fn is_resource_not_found_exception(&self) -> bool {
310        matches!(self, Self::ResourceNotFoundException(_))
311    }
312    /// Returns `true` if the error kind is `CreateAccessTokenError::ServiceQuotaExceededException`.
313    pub fn is_service_quota_exceeded_exception(&self) -> bool {
314        matches!(self, Self::ServiceQuotaExceededException(_))
315    }
316    /// Returns `true` if the error kind is `CreateAccessTokenError::ThrottlingException`.
317    pub fn is_throttling_exception(&self) -> bool {
318        matches!(self, Self::ThrottlingException(_))
319    }
320    /// Returns `true` if the error kind is `CreateAccessTokenError::ValidationException`.
321    pub fn is_validation_exception(&self) -> bool {
322        matches!(self, Self::ValidationException(_))
323    }
324}
325impl ::std::error::Error for CreateAccessTokenError {
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::ConflictException(_inner) => ::std::option::Option::Some(_inner),
330            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
331            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
332            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
333            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
334            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
335        }
336    }
337}
338impl ::std::fmt::Display for CreateAccessTokenError {
339    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
340        match self {
341            Self::AccessDeniedException(_inner) => _inner.fmt(f),
342            Self::ConflictException(_inner) => _inner.fmt(f),
343            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
344            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
345            Self::ThrottlingException(_inner) => _inner.fmt(f),
346            Self::ValidationException(_inner) => _inner.fmt(f),
347            Self::Unhandled(_inner) => {
348                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
349                    write!(f, "unhandled error ({code})")
350                } else {
351                    f.write_str("unhandled error")
352                }
353            }
354        }
355    }
356}
357impl ::aws_smithy_types::retry::ProvideErrorKind for CreateAccessTokenError {
358    fn code(&self) -> ::std::option::Option<&str> {
359        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
360    }
361    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
362        match self {
363            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
364            _ => ::std::option::Option::None,
365        }
366    }
367}
368impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateAccessTokenError {
369    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
370        match self {
371            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
372            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
373            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
374            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
375            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
376            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
377            Self::Unhandled(_inner) => &_inner.meta,
378        }
379    }
380}
381impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateAccessTokenError {
382    fn create_unhandled_error(
383        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
384        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
385    ) -> Self {
386        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
387            source,
388            meta: meta.unwrap_or_default(),
389        })
390    }
391}
392impl ::aws_types::request_id::RequestId for crate::operation::create_access_token::CreateAccessTokenError {
393    fn request_id(&self) -> Option<&str> {
394        self.meta().request_id()
395    }
396}
397
398pub use crate::operation::create_access_token::_create_access_token_output::CreateAccessTokenOutput;
399
400pub use crate::operation::create_access_token::_create_access_token_input::CreateAccessTokenInput;
401
402mod _create_access_token_input;
403
404mod _create_access_token_output;
405
406/// Builders
407pub mod builders;