Skip to main content

aws_sdk_codecatalyst/operation/
get_source_repository_clone_urls.rs

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