Skip to main content

aws_sdk_codecatalyst/operation/
get_project.rs

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