aws_sdk_codecatalyst/operation/
delete_space.rs

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