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        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
70            ::aws_smithy_runtime_api::client::auth::http::HTTP_BEARER_AUTH_SCHEME_ID,
71        ]));
72        if let ::std::option::Option::Some(config_override) = config_override {
73            for plugin in config_override.runtime_plugins.iter().cloned() {
74                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
75            }
76            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
77                config_override,
78                client_config.config.clone(),
79                &client_config.runtime_components,
80            ));
81        }
82        runtime_plugins
83    }
84}
85impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for GetSpace {
86    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
87        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("GetSpace");
88
89        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
90            GetSpaceRequestSerializer,
91        ));
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
93            GetSpaceResponseDeserializer,
94        ));
95
96        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
97            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("GetSpace", "CodeCatalyst"));
101
102        ::std::option::Option::Some(cfg.freeze())
103    }
104
105    fn runtime_components(
106        &self,
107        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
108    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
109        #[allow(unused_mut)]
110        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("GetSpace")
111            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
112            .with_interceptor(GetSpaceEndpointParamsInterceptor)
113            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
114                crate::operation::get_space::GetSpaceError,
115            >::new())
116            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
117                crate::operation::get_space::GetSpaceError,
118            >::new())
119            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
120                crate::operation::get_space::GetSpaceError,
121            >::new());
122
123        ::std::borrow::Cow::Owned(rcb)
124    }
125}
126
127#[derive(Debug)]
128struct GetSpaceResponseDeserializer;
129impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetSpaceResponseDeserializer {
130    fn deserialize_nonstreaming(
131        &self,
132        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
133    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
134        let (success, status) = (response.status().is_success(), response.status().as_u16());
135        let headers = response.headers();
136        let body = response.body().bytes().expect("body loaded");
137        #[allow(unused_mut)]
138        let mut force_error = false;
139        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
140        let parse_result = if !success && status != 200 || force_error {
141            crate::protocol_serde::shape_get_space::de_get_space_http_error(status, headers, body)
142        } else {
143            crate::protocol_serde::shape_get_space::de_get_space_http_response(status, headers, body)
144        };
145        crate::protocol_serde::type_erase_result(parse_result)
146    }
147}
148#[derive(Debug)]
149struct GetSpaceRequestSerializer;
150impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetSpaceRequestSerializer {
151    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
152    fn serialize_input(
153        &self,
154        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
155        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
156    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
157        let input = input.downcast::<crate::operation::get_space::GetSpaceInput>().expect("correct type");
158        let _header_serialization_settings = _cfg
159            .load::<crate::serialization_settings::HeaderSerializationSettings>()
160            .cloned()
161            .unwrap_or_default();
162        let mut request_builder = {
163            fn uri_base(
164                _input: &crate::operation::get_space::GetSpaceInput,
165                output: &mut ::std::string::String,
166            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
167                use ::std::fmt::Write as _;
168                let input_1 = &_input.name;
169                let input_1 = input_1
170                    .as_ref()
171                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("name", "cannot be empty or unset"))?;
172                let name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
173                if name.is_empty() {
174                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
175                        "name",
176                        "cannot be empty or unset",
177                    ));
178                }
179                ::std::write!(output, "/v1/spaces/{name}", name = name).expect("formatting should succeed");
180                ::std::result::Result::Ok(())
181            }
182            #[allow(clippy::unnecessary_wraps)]
183            fn update_http_builder(
184                input: &crate::operation::get_space::GetSpaceInput,
185                builder: ::http::request::Builder,
186            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
187                let mut uri = ::std::string::String::new();
188                uri_base(input, &mut uri)?;
189                ::std::result::Result::Ok(builder.method("GET").uri(uri))
190            }
191            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
192            builder
193        };
194        let body = ::aws_smithy_types::body::SdkBody::from("");
195
196        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
197    }
198}
199#[derive(Debug)]
200struct GetSpaceEndpointParamsInterceptor;
201
202impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetSpaceEndpointParamsInterceptor {
203    fn name(&self) -> &'static str {
204        "GetSpaceEndpointParamsInterceptor"
205    }
206
207    fn read_before_execution(
208        &self,
209        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
210            '_,
211            ::aws_smithy_runtime_api::client::interceptors::context::Input,
212            ::aws_smithy_runtime_api::client::interceptors::context::Output,
213            ::aws_smithy_runtime_api::client::interceptors::context::Error,
214        >,
215        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
216    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
217        let _input = context
218            .input()
219            .downcast_ref::<GetSpaceInput>()
220            .ok_or("failed to downcast to GetSpaceInput")?;
221
222        let params = crate::config::endpoint::Params::builder()
223            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
224            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
225            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
226            .build()
227            .map_err(|err| {
228                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
229            })?;
230        cfg.interceptor_state()
231            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
232        ::std::result::Result::Ok(())
233    }
234}
235
236// The get_* functions below are generated from JMESPath expressions in the
237// operationContextParams trait. They target the operation's input shape.
238
239/// Error type for the `GetSpaceError` operation.
240#[non_exhaustive]
241#[derive(::std::fmt::Debug)]
242pub enum GetSpaceError {
243    /// <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>
244    AccessDeniedException(crate::types::error::AccessDeniedException),
245    /// <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>
246    ConflictException(crate::types::error::ConflictException),
247    /// <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>
248    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
249    /// <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>
250    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
251    /// <p>The request was denied due to request throttling.</p>
252    ThrottlingException(crate::types::error::ThrottlingException),
253    /// <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>
254    ValidationException(crate::types::error::ValidationException),
255    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
256    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
257    variable wildcard pattern and check `.code()`:
258     \
259    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
260     \
261    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-GetSpaceError) for what information is available for the error.")]
262    Unhandled(crate::error::sealed_unhandled::Unhandled),
263}
264impl GetSpaceError {
265    /// Creates the `GetSpaceError::Unhandled` variant from any error type.
266    pub fn unhandled(
267        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
268    ) -> Self {
269        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
270            source: err.into(),
271            meta: ::std::default::Default::default(),
272        })
273    }
274
275    /// Creates the `GetSpaceError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
276    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
277        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
278            source: err.clone().into(),
279            meta: err,
280        })
281    }
282    ///
283    /// Returns error metadata, which includes the error code, message,
284    /// request ID, and potentially additional information.
285    ///
286    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
287        match self {
288            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
289            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
290            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
291            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
292            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
293            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
294            Self::Unhandled(e) => &e.meta,
295        }
296    }
297    /// Returns `true` if the error kind is `GetSpaceError::AccessDeniedException`.
298    pub fn is_access_denied_exception(&self) -> bool {
299        matches!(self, Self::AccessDeniedException(_))
300    }
301    /// Returns `true` if the error kind is `GetSpaceError::ConflictException`.
302    pub fn is_conflict_exception(&self) -> bool {
303        matches!(self, Self::ConflictException(_))
304    }
305    /// Returns `true` if the error kind is `GetSpaceError::ResourceNotFoundException`.
306    pub fn is_resource_not_found_exception(&self) -> bool {
307        matches!(self, Self::ResourceNotFoundException(_))
308    }
309    /// Returns `true` if the error kind is `GetSpaceError::ServiceQuotaExceededException`.
310    pub fn is_service_quota_exceeded_exception(&self) -> bool {
311        matches!(self, Self::ServiceQuotaExceededException(_))
312    }
313    /// Returns `true` if the error kind is `GetSpaceError::ThrottlingException`.
314    pub fn is_throttling_exception(&self) -> bool {
315        matches!(self, Self::ThrottlingException(_))
316    }
317    /// Returns `true` if the error kind is `GetSpaceError::ValidationException`.
318    pub fn is_validation_exception(&self) -> bool {
319        matches!(self, Self::ValidationException(_))
320    }
321}
322impl ::std::error::Error for GetSpaceError {
323    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
324        match self {
325            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
326            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
327            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
328            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
329            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
330            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
331            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
332        }
333    }
334}
335impl ::std::fmt::Display for GetSpaceError {
336    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
337        match self {
338            Self::AccessDeniedException(_inner) => _inner.fmt(f),
339            Self::ConflictException(_inner) => _inner.fmt(f),
340            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
341            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
342            Self::ThrottlingException(_inner) => _inner.fmt(f),
343            Self::ValidationException(_inner) => _inner.fmt(f),
344            Self::Unhandled(_inner) => {
345                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
346                    write!(f, "unhandled error ({code})")
347                } else {
348                    f.write_str("unhandled error")
349                }
350            }
351        }
352    }
353}
354impl ::aws_smithy_types::retry::ProvideErrorKind for GetSpaceError {
355    fn code(&self) -> ::std::option::Option<&str> {
356        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
357    }
358    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
359        match self {
360            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
361            _ => ::std::option::Option::None,
362        }
363    }
364}
365impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for GetSpaceError {
366    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
367        match self {
368            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
369            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
370            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
371            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
372            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
373            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
374            Self::Unhandled(_inner) => &_inner.meta,
375        }
376    }
377}
378impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for GetSpaceError {
379    fn create_unhandled_error(
380        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
381        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
382    ) -> Self {
383        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
384            source,
385            meta: meta.unwrap_or_default(),
386        })
387    }
388}
389impl ::aws_types::request_id::RequestId for crate::operation::get_space::GetSpaceError {
390    fn request_id(&self) -> Option<&str> {
391        self.meta().request_id()
392    }
393}
394
395pub use crate::operation::get_space::_get_space_output::GetSpaceOutput;
396
397pub use crate::operation::get_space::_get_space_input::GetSpaceInput;
398
399mod _get_space_input;
400
401mod _get_space_output;
402
403/// Builders
404pub mod builders;