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