Skip to main content

aws_sdk_codecatalyst/operation/
create_source_repository_branch.rs

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