aws_sdk_codecatalyst/operation/
list_access_tokens.rs

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