aws_sdk_codecatalyst/operation/
delete_dev_environment.rs

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