aws_sdk_codecatalyst/operation/
list_spaces.rs

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