Skip to main content

aws_sdk_codecatalyst/operation/
get_space.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `GetSpace`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct GetSpace;
6impl GetSpace {
7    /// Creates a new `GetSpace`
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::get_space::GetSpaceInput,
14    ) -> ::std::result::Result<
15        crate::operation::get_space::GetSpaceOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::get_space::GetSpaceError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err =
22            |err: ::aws_smithy_runtime_api::client::result::SdkError<
23                ::aws_smithy_runtime_api::client::interceptors::context::Error,
24                ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
25            >| { err.map_service_error(|err| err.downcast::<crate::operation::get_space::GetSpaceError>().expect("correct error type")) };
26        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
27            .await
28            .map_err(map_err)?;
29        let output = context.finalize().map_err(map_err)?;
30        ::std::result::Result::Ok(
31            output
32                .downcast::<crate::operation::get_space::GetSpaceOutput>()
33                .expect("correct output type"),
34        )
35    }
36
37    pub(crate) async fn orchestrate_with_stop_point(
38        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
39        input: crate::operation::get_space::GetSpaceInput,
40        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
41    ) -> ::std::result::Result<
42        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
43        ::aws_smithy_runtime_api::client::result::SdkError<
44            ::aws_smithy_runtime_api::client::interceptors::context::Error,
45            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
46        >,
47    > {
48        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
49        use ::tracing::Instrument;
50        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("CodeCatalyst", "GetSpace", input, runtime_plugins, stop_point)
51            // Create a parent span for the entire operation. Includes a random, internal-only,
52            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
53            .instrument(::tracing::debug_span!(
54                "CodeCatalyst.GetSpace",
55                "rpc.service" = "CodeCatalyst",
56                "rpc.method" = "GetSpace",
57                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
58                "rpc.system" = "aws-api",
59            ))
60            .await
61    }
62
63    pub(crate) fn operation_runtime_plugins(
64        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
65        client_config: &crate::config::Config,
66        config_override: ::std::option::Option<crate::config::Builder>,
67    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
68        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
69
70        if let ::std::option::Option::Some(config_override) = config_override {
71            for plugin in config_override.runtime_plugins.iter().cloned() {
72                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
73            }
74            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
75                config_override,
76                client_config.config.clone(),
77                &client_config.runtime_components,
78            ));
79        }
80        runtime_plugins
81    }
82}
83impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for GetSpace {
84    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
85        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("GetSpace");
86
87        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
88            GetSpaceRequestSerializer,
89        ));
90        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
91            GetSpaceResponseDeserializer,
92        ));
93
94        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
95            crate::config::auth::Params::builder()
96                .operation_name("GetSpace")
97                .build()
98                .expect("required fields set"),
99        ));
100
101        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("GetSpace", "CodeCatalyst"));
102
103        ::std::option::Option::Some(cfg.freeze())
104    }
105
106    fn runtime_components(
107        &self,
108        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
109    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
110        #[allow(unused_mut)]
111        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("GetSpace")
112            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
113                GetSpaceTelemetryInputCaptureInterceptor,
114            ))
115            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
116                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
117            ))
118            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
119                GetSpaceEndpointParamsInterceptor,
120            ))
121            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
122                crate::operation::get_space::GetSpaceError,
123            >::new())
124            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
125                crate::operation::get_space::GetSpaceError,
126            >::new())
127            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
128                crate::operation::get_space::GetSpaceError,
129            >::new());
130
131        ::std::borrow::Cow::Owned(rcb)
132    }
133}
134
135#[derive(Debug)]
136struct GetSpaceTelemetryInputCaptureInterceptor;
137
138#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
139impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetSpaceTelemetryInputCaptureInterceptor {
140    fn name(&self) -> &'static str {
141        "GetSpaceTelemetryInputCaptureInterceptor"
142    }
143
144    fn read_before_execution(
145        &self,
146        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
147            '_,
148            ::aws_smithy_runtime_api::client::interceptors::context::Input,
149            ::aws_smithy_runtime_api::client::interceptors::context::Output,
150            ::aws_smithy_runtime_api::client::interceptors::context::Error,
151        >,
152        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
153    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
154        // Nothing to do unless the customer opted in by naming members to record.
155        let ::std::option::Option::Some(requested) = cfg
156            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
157            .filter(|r| !r.is_empty())
158        else {
159            return ::std::result::Result::Ok(());
160        };
161
162        let ::std::option::Option::Some(input) = context.input().downcast_ref::<GetSpaceInput>() else {
163            // A mismatched input is not this interceptor's concern; skip quietly.
164            return ::std::result::Result::Ok(());
165        };
166
167        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
168        if requested.should_capture("name") {
169            if let ::std::option::Option::Some(value) = input.name.as_deref() {
170                captured.insert("name", value);
171            }
172        }
173
174        cfg.interceptor_state().store_put(captured);
175        ::std::result::Result::Ok(())
176    }
177}
178#[derive(Debug)]
179struct GetSpaceResponseDeserializer;
180impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetSpaceResponseDeserializer {
181    fn deserialize_nonstreaming_with_config(
182        &self,
183        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
184        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
185    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
186        let (success, status) = (response.status().is_success(), response.status().as_u16());
187        let headers = response.headers();
188        let body = response.body().bytes().expect("body loaded");
189        #[allow(unused_mut)]
190        let mut force_error = false;
191        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
192        let parse_result = if !success && status != 200 || force_error {
193            crate::protocol_serde::shape_get_space::de_get_space_http_error(status, headers, body)
194        } else {
195            crate::protocol_serde::shape_get_space::de_get_space_http_response(status, headers, body)
196        };
197        crate::protocol_serde::type_erase_result(parse_result)
198    }
199}
200#[derive(Debug)]
201struct GetSpaceRequestSerializer;
202impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetSpaceRequestSerializer {
203    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
204    fn serialize_input(
205        &self,
206        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
207        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
208    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
209        let input = input.downcast::<crate::operation::get_space::GetSpaceInput>().expect("correct type");
210        let _header_serialization_settings = _cfg
211            .load::<crate::serialization_settings::HeaderSerializationSettings>()
212            .cloned()
213            .unwrap_or_default();
214        let mut request_builder = {
215            #[allow(clippy::uninlined_format_args)]
216            fn uri_base(
217                _input: &crate::operation::get_space::GetSpaceInput,
218                output: &mut ::std::string::String,
219            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
220                use ::std::fmt::Write as _;
221                let input_1 = &_input.name;
222                let input_1 = input_1
223                    .as_ref()
224                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("name", "cannot be empty or unset"))?;
225                let name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
226                if name.is_empty() {
227                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
228                        "name",
229                        "cannot be empty or unset",
230                    ));
231                }
232                ::std::write!(output, "/v1/spaces/{name}", name = name).expect("formatting should succeed");
233                ::std::result::Result::Ok(())
234            }
235            #[allow(clippy::unnecessary_wraps)]
236            fn update_http_builder(
237                input: &crate::operation::get_space::GetSpaceInput,
238                builder: ::http_1x::request::Builder,
239            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
240                let mut uri = ::std::string::String::new();
241                uri_base(input, &mut uri)?;
242                ::std::result::Result::Ok(builder.method("GET").uri(uri))
243            }
244            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
245            builder
246        };
247        let body = ::aws_smithy_types::body::SdkBody::from("");
248
249        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
250    }
251}
252#[derive(Debug)]
253struct GetSpaceEndpointParamsInterceptor;
254
255#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
256impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetSpaceEndpointParamsInterceptor {
257    fn name(&self) -> &'static str {
258        "GetSpaceEndpointParamsInterceptor"
259    }
260
261    fn read_before_execution(
262        &self,
263        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
264            '_,
265            ::aws_smithy_runtime_api::client::interceptors::context::Input,
266            ::aws_smithy_runtime_api::client::interceptors::context::Output,
267            ::aws_smithy_runtime_api::client::interceptors::context::Error,
268        >,
269        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
270    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
271        let _input = context
272            .input()
273            .downcast_ref::<GetSpaceInput>()
274            .ok_or("failed to downcast to GetSpaceInput")?;
275
276        let params = crate::config::endpoint::Params::builder()
277            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
278            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
279            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
280            .build()
281            .map_err(|err| {
282                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
283            })?;
284        cfg.interceptor_state()
285            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
286        ::std::result::Result::Ok(())
287    }
288}
289
290// The get_* functions below are generated from JMESPath expressions in the
291// operationContextParams trait. They target the operation's input shape.
292
293/// Error type for the `GetSpaceError` operation.
294#[non_exhaustive]
295#[derive(::std::fmt::Debug)]
296pub enum GetSpaceError {
297    /// <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>
298    AccessDeniedException(crate::types::error::AccessDeniedException),
299    /// <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>
300    ConflictException(crate::types::error::ConflictException),
301    /// <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>
302    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
303    /// <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>
304    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
305    /// <p>The request was denied due to request throttling.</p>
306    ThrottlingException(crate::types::error::ThrottlingException),
307    /// <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>
308    ValidationException(crate::types::error::ValidationException),
309    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
310    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
311    variable wildcard pattern and check `.code()`:
312     \
313    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
314     \
315    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-GetSpaceError) for what information is available for the error.")]
316    Unhandled(crate::error::sealed_unhandled::Unhandled),
317}
318impl GetSpaceError {
319    /// Creates the `GetSpaceError::Unhandled` variant from any error type.
320    pub fn unhandled(
321        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
322    ) -> Self {
323        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
324            source: err.into(),
325            meta: ::std::default::Default::default(),
326        })
327    }
328
329    /// Creates the `GetSpaceError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
330    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
331        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
332            source: err.clone().into(),
333            meta: err,
334        })
335    }
336    ///
337    /// Returns error metadata, which includes the error code, message,
338    /// request ID, and potentially additional information.
339    ///
340    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
341        match self {
342            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
344            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
345            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
346            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
347            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
348            Self::Unhandled(e) => &e.meta,
349        }
350    }
351    /// Returns `true` if the error kind is `GetSpaceError::AccessDeniedException`.
352    pub fn is_access_denied_exception(&self) -> bool {
353        matches!(self, Self::AccessDeniedException(_))
354    }
355    /// Returns `true` if the error kind is `GetSpaceError::ConflictException`.
356    pub fn is_conflict_exception(&self) -> bool {
357        matches!(self, Self::ConflictException(_))
358    }
359    /// Returns `true` if the error kind is `GetSpaceError::ResourceNotFoundException`.
360    pub fn is_resource_not_found_exception(&self) -> bool {
361        matches!(self, Self::ResourceNotFoundException(_))
362    }
363    /// Returns `true` if the error kind is `GetSpaceError::ServiceQuotaExceededException`.
364    pub fn is_service_quota_exceeded_exception(&self) -> bool {
365        matches!(self, Self::ServiceQuotaExceededException(_))
366    }
367    /// Returns `true` if the error kind is `GetSpaceError::ThrottlingException`.
368    pub fn is_throttling_exception(&self) -> bool {
369        matches!(self, Self::ThrottlingException(_))
370    }
371    /// Returns `true` if the error kind is `GetSpaceError::ValidationException`.
372    pub fn is_validation_exception(&self) -> bool {
373        matches!(self, Self::ValidationException(_))
374    }
375}
376impl ::std::error::Error for GetSpaceError {
377    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
378        match self {
379            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
380            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
381            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
382            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
383            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
384            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
385            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
386        }
387    }
388}
389impl ::std::fmt::Display for GetSpaceError {
390    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
391        match self {
392            Self::AccessDeniedException(_inner) => _inner.fmt(f),
393            Self::ConflictException(_inner) => _inner.fmt(f),
394            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
395            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
396            Self::ThrottlingException(_inner) => _inner.fmt(f),
397            Self::ValidationException(_inner) => _inner.fmt(f),
398            Self::Unhandled(_inner) => {
399                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
400                    write!(f, "unhandled error ({code})")
401                } else {
402                    f.write_str("unhandled error")
403                }
404            }
405        }
406    }
407}
408impl ::aws_smithy_types::retry::ProvideErrorKind for GetSpaceError {
409    fn code(&self) -> ::std::option::Option<&str> {
410        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
411    }
412    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
413        match self {
414            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
415            _ => ::std::option::Option::None,
416        }
417    }
418}
419impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for GetSpaceError {
420    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
421        match self {
422            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
425            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
426            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
427            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
428            Self::Unhandled(_inner) => &_inner.meta,
429        }
430    }
431}
432impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for GetSpaceError {
433    fn create_unhandled_error(
434        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
435        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
436    ) -> Self {
437        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
438            source,
439            meta: meta.unwrap_or_default(),
440        })
441    }
442}
443impl ::aws_types::request_id::RequestId for crate::operation::get_space::GetSpaceError {
444    fn request_id(&self) -> Option<&str> {
445        self.meta().request_id()
446    }
447}
448
449pub use crate::operation::get_space::_get_space_input::GetSpaceInput;
450
451pub use crate::operation::get_space::_get_space_output::GetSpaceOutput;
452
453mod _get_space_input;
454
455mod _get_space_output;
456
457/// Builders
458pub mod builders;