aws_sdk_codecatalyst/operation/
list_dev_environments.rs

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