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