aws_sdk_codecommit/operation/
associate_approval_rule_template_with_repository.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `AssociateApprovalRuleTemplateWithRepository`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct AssociateApprovalRuleTemplateWithRepository;
6impl AssociateApprovalRuleTemplateWithRepository {
7    /// Creates a new `AssociateApprovalRuleTemplateWithRepository`
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::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryInput,
14    ) -> ::std::result::Result<
15        crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError,
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::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError>()
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::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryOutput>()
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::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryInput,
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            "CodeCommit",
56            "AssociateApprovalRuleTemplateWithRepository",
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            "CodeCommit.AssociateApprovalRuleTemplateWithRepository",
65            "rpc.service" = "CodeCommit",
66            "rpc.method" = "AssociateApprovalRuleTemplateWithRepository",
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 AssociateApprovalRuleTemplateWithRepository {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("AssociateApprovalRuleTemplateWithRepository");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            AssociateApprovalRuleTemplateWithRepositoryRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            AssociateApprovalRuleTemplateWithRepositoryResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("AssociateApprovalRuleTemplateWithRepository")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "AssociateApprovalRuleTemplateWithRepository",
113            "CodeCommit",
114        ));
115        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
116        signing_options.double_uri_encode = true;
117        signing_options.content_sha256_header = false;
118        signing_options.normalize_uri_path = true;
119        signing_options.payload_override = None;
120
121        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
122            signing_options,
123            ..::std::default::Default::default()
124        });
125
126        ::std::option::Option::Some(cfg.freeze())
127    }
128
129    fn runtime_components(
130        &self,
131        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
132    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
133        #[allow(unused_mut)]
134        let mut rcb =
135            ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("AssociateApprovalRuleTemplateWithRepository")
136                .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
137                .with_interceptor(AssociateApprovalRuleTemplateWithRepositoryEndpointParamsInterceptor)
138                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                    crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError,
140                >::new())
141                .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                    crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError,
143                >::new())
144                .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                    crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError,
146                >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct AssociateApprovalRuleTemplateWithRepositoryResponseDeserializer;
154impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for AssociateApprovalRuleTemplateWithRepositoryResponseDeserializer {
155    fn deserialize_nonstreaming(
156        &self,
157        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
158    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
159        let (success, status) = (response.status().is_success(), response.status().as_u16());
160        let headers = response.headers();
161        let body = response.body().bytes().expect("body loaded");
162        #[allow(unused_mut)]
163        let mut force_error = false;
164        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
165        let parse_result = if !success && status != 200 || force_error {
166            crate::protocol_serde::shape_associate_approval_rule_template_with_repository::de_associate_approval_rule_template_with_repository_http_error(status, headers, body)
167        } else {
168            crate::protocol_serde::shape_associate_approval_rule_template_with_repository::de_associate_approval_rule_template_with_repository_http_response(status, headers, body)
169        };
170        crate::protocol_serde::type_erase_result(parse_result)
171    }
172}
173#[derive(Debug)]
174struct AssociateApprovalRuleTemplateWithRepositoryRequestSerializer;
175impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for AssociateApprovalRuleTemplateWithRepositoryRequestSerializer {
176    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
177    fn serialize_input(
178        &self,
179        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
180        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
181    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
182        let input = input
183            .downcast::<crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryInput>()
184            .expect("correct type");
185        let _header_serialization_settings = _cfg
186            .load::<crate::serialization_settings::HeaderSerializationSettings>()
187            .cloned()
188            .unwrap_or_default();
189        let mut request_builder = {
190            #[allow(clippy::uninlined_format_args)]
191            fn uri_base(
192                _input: &crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryInput,
193                output: &mut ::std::string::String,
194            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
195                use ::std::fmt::Write as _;
196                ::std::write!(output, "/").expect("formatting should succeed");
197                ::std::result::Result::Ok(())
198            }
199            #[allow(clippy::unnecessary_wraps)]
200            fn update_http_builder(
201                input: &crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryInput,
202                builder: ::http::request::Builder,
203            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
204                let mut uri = ::std::string::String::new();
205                uri_base(input, &mut uri)?;
206                ::std::result::Result::Ok(builder.method("POST").uri(uri))
207            }
208            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
209            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
210            builder = _header_serialization_settings.set_default_header(
211                builder,
212                ::http::header::HeaderName::from_static("x-amz-target"),
213                "CodeCommit_20150413.AssociateApprovalRuleTemplateWithRepository",
214            );
215            builder
216        };
217        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_associate_approval_rule_template_with_repository::ser_associate_approval_rule_template_with_repository_input(&input)?);
218        if let Some(content_length) = body.content_length() {
219            let content_length = content_length.to_string();
220            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
221        }
222        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
223    }
224}
225#[derive(Debug)]
226struct AssociateApprovalRuleTemplateWithRepositoryEndpointParamsInterceptor;
227
228impl ::aws_smithy_runtime_api::client::interceptors::Intercept for AssociateApprovalRuleTemplateWithRepositoryEndpointParamsInterceptor {
229    fn name(&self) -> &'static str {
230        "AssociateApprovalRuleTemplateWithRepositoryEndpointParamsInterceptor"
231    }
232
233    fn read_before_execution(
234        &self,
235        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
236            '_,
237            ::aws_smithy_runtime_api::client::interceptors::context::Input,
238            ::aws_smithy_runtime_api::client::interceptors::context::Output,
239            ::aws_smithy_runtime_api::client::interceptors::context::Error,
240        >,
241        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
242    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
243        let _input = context
244            .input()
245            .downcast_ref::<AssociateApprovalRuleTemplateWithRepositoryInput>()
246            .ok_or("failed to downcast to AssociateApprovalRuleTemplateWithRepositoryInput")?;
247
248        let params = crate::config::endpoint::Params::builder()
249            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
250            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
251            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
252            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
253            .build()
254            .map_err(|err| {
255                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
256            })?;
257        cfg.interceptor_state()
258            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
259        ::std::result::Result::Ok(())
260    }
261}
262
263// The get_* functions below are generated from JMESPath expressions in the
264// operationContextParams trait. They target the operation's input shape.
265
266/// Error type for the `AssociateApprovalRuleTemplateWithRepositoryError` operation.
267#[non_exhaustive]
268#[derive(::std::fmt::Debug)]
269pub enum AssociateApprovalRuleTemplateWithRepositoryError {
270    /// <p>The specified approval rule template does not exist. Verify that the name is correct and that you are signed in to the Amazon Web Services Region where the template was created, and then try again.</p>
271    ApprovalRuleTemplateDoesNotExistException(crate::types::error::ApprovalRuleTemplateDoesNotExistException),
272    /// <p>An approval rule template name is required, but was not specified.</p>
273    ApprovalRuleTemplateNameRequiredException(crate::types::error::ApprovalRuleTemplateNameRequiredException),
274    /// <p>An encryption integrity check failed.</p>
275    EncryptionIntegrityChecksFailedException(crate::types::error::EncryptionIntegrityChecksFailedException),
276    /// <p>An encryption key could not be accessed.</p>
277    EncryptionKeyAccessDeniedException(crate::types::error::EncryptionKeyAccessDeniedException),
278    /// <p>The encryption key is disabled.</p>
279    EncryptionKeyDisabledException(crate::types::error::EncryptionKeyDisabledException),
280    /// <p>No encryption key was found.</p>
281    EncryptionKeyNotFoundException(crate::types::error::EncryptionKeyNotFoundException),
282    /// <p>The encryption key is not available.</p>
283    EncryptionKeyUnavailableException(crate::types::error::EncryptionKeyUnavailableException),
284    /// <p>The name of the approval rule template is not valid. Template names must be between 1 and 100 valid characters in length. For more information about limits in CodeCommit, see <a href="https://docs.aws.amazon.com/codecommit/latest/userguide/limits.html">Quotas</a> in the <i>CodeCommit User Guide</i>.</p>
285    InvalidApprovalRuleTemplateNameException(crate::types::error::InvalidApprovalRuleTemplateNameException),
286    /// <p>A specified repository name is not valid.</p><note>
287    /// <p>This exception occurs only when a specified repository name is not valid. Other exceptions occur when a required repository parameter is missing, or when a specified repository does not exist.</p>
288    /// </note>
289    InvalidRepositoryNameException(crate::types::error::InvalidRepositoryNameException),
290    /// <p>The maximum number of approval rule templates for a repository has been exceeded. You cannot associate more than 25 approval rule templates with a repository.</p>
291    MaximumRuleTemplatesAssociatedWithRepositoryException(crate::types::error::MaximumRuleTemplatesAssociatedWithRepositoryException),
292    /// <p>The specified repository does not exist.</p>
293    RepositoryDoesNotExistException(crate::types::error::RepositoryDoesNotExistException),
294    /// <p>A repository name is required, but was not specified.</p>
295    RepositoryNameRequiredException(crate::types::error::RepositoryNameRequiredException),
296    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
297    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
298    variable wildcard pattern and check `.code()`:
299     \
300    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
301     \
302    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-AssociateApprovalRuleTemplateWithRepositoryError) for what information is available for the error.")]
303    Unhandled(crate::error::sealed_unhandled::Unhandled),
304}
305impl AssociateApprovalRuleTemplateWithRepositoryError {
306    /// Creates the `AssociateApprovalRuleTemplateWithRepositoryError::Unhandled` variant from any error type.
307    pub fn unhandled(
308        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
309    ) -> Self {
310        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
311            source: err.into(),
312            meta: ::std::default::Default::default(),
313        })
314    }
315
316    /// Creates the `AssociateApprovalRuleTemplateWithRepositoryError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
317    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
318        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
319            source: err.clone().into(),
320            meta: err,
321        })
322    }
323    ///
324    /// Returns error metadata, which includes the error code, message,
325    /// request ID, and potentially additional information.
326    ///
327    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
328        match self {
329            Self::ApprovalRuleTemplateDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::ApprovalRuleTemplateNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::EncryptionIntegrityChecksFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::EncryptionKeyAccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::EncryptionKeyDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::EncryptionKeyNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::EncryptionKeyUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::InvalidApprovalRuleTemplateNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::InvalidRepositoryNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::MaximumRuleTemplatesAssociatedWithRepositoryException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::RepositoryDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::RepositoryNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::Unhandled(e) => &e.meta,
342        }
343    }
344    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::ApprovalRuleTemplateDoesNotExistException`.
345    pub fn is_approval_rule_template_does_not_exist_exception(&self) -> bool {
346        matches!(self, Self::ApprovalRuleTemplateDoesNotExistException(_))
347    }
348    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::ApprovalRuleTemplateNameRequiredException`.
349    pub fn is_approval_rule_template_name_required_exception(&self) -> bool {
350        matches!(self, Self::ApprovalRuleTemplateNameRequiredException(_))
351    }
352    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::EncryptionIntegrityChecksFailedException`.
353    pub fn is_encryption_integrity_checks_failed_exception(&self) -> bool {
354        matches!(self, Self::EncryptionIntegrityChecksFailedException(_))
355    }
356    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::EncryptionKeyAccessDeniedException`.
357    pub fn is_encryption_key_access_denied_exception(&self) -> bool {
358        matches!(self, Self::EncryptionKeyAccessDeniedException(_))
359    }
360    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::EncryptionKeyDisabledException`.
361    pub fn is_encryption_key_disabled_exception(&self) -> bool {
362        matches!(self, Self::EncryptionKeyDisabledException(_))
363    }
364    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::EncryptionKeyNotFoundException`.
365    pub fn is_encryption_key_not_found_exception(&self) -> bool {
366        matches!(self, Self::EncryptionKeyNotFoundException(_))
367    }
368    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::EncryptionKeyUnavailableException`.
369    pub fn is_encryption_key_unavailable_exception(&self) -> bool {
370        matches!(self, Self::EncryptionKeyUnavailableException(_))
371    }
372    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::InvalidApprovalRuleTemplateNameException`.
373    pub fn is_invalid_approval_rule_template_name_exception(&self) -> bool {
374        matches!(self, Self::InvalidApprovalRuleTemplateNameException(_))
375    }
376    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::InvalidRepositoryNameException`.
377    pub fn is_invalid_repository_name_exception(&self) -> bool {
378        matches!(self, Self::InvalidRepositoryNameException(_))
379    }
380    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::MaximumRuleTemplatesAssociatedWithRepositoryException`.
381    pub fn is_maximum_rule_templates_associated_with_repository_exception(&self) -> bool {
382        matches!(self, Self::MaximumRuleTemplatesAssociatedWithRepositoryException(_))
383    }
384    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::RepositoryDoesNotExistException`.
385    pub fn is_repository_does_not_exist_exception(&self) -> bool {
386        matches!(self, Self::RepositoryDoesNotExistException(_))
387    }
388    /// Returns `true` if the error kind is `AssociateApprovalRuleTemplateWithRepositoryError::RepositoryNameRequiredException`.
389    pub fn is_repository_name_required_exception(&self) -> bool {
390        matches!(self, Self::RepositoryNameRequiredException(_))
391    }
392}
393impl ::std::error::Error for AssociateApprovalRuleTemplateWithRepositoryError {
394    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
395        match self {
396            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
397            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
398            Self::EncryptionIntegrityChecksFailedException(_inner) => ::std::option::Option::Some(_inner),
399            Self::EncryptionKeyAccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
400            Self::EncryptionKeyDisabledException(_inner) => ::std::option::Option::Some(_inner),
401            Self::EncryptionKeyNotFoundException(_inner) => ::std::option::Option::Some(_inner),
402            Self::EncryptionKeyUnavailableException(_inner) => ::std::option::Option::Some(_inner),
403            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::std::option::Option::Some(_inner),
404            Self::InvalidRepositoryNameException(_inner) => ::std::option::Option::Some(_inner),
405            Self::MaximumRuleTemplatesAssociatedWithRepositoryException(_inner) => ::std::option::Option::Some(_inner),
406            Self::RepositoryDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
407            Self::RepositoryNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
408            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
409        }
410    }
411}
412impl ::std::fmt::Display for AssociateApprovalRuleTemplateWithRepositoryError {
413    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
414        match self {
415            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => _inner.fmt(f),
416            Self::ApprovalRuleTemplateNameRequiredException(_inner) => _inner.fmt(f),
417            Self::EncryptionIntegrityChecksFailedException(_inner) => _inner.fmt(f),
418            Self::EncryptionKeyAccessDeniedException(_inner) => _inner.fmt(f),
419            Self::EncryptionKeyDisabledException(_inner) => _inner.fmt(f),
420            Self::EncryptionKeyNotFoundException(_inner) => _inner.fmt(f),
421            Self::EncryptionKeyUnavailableException(_inner) => _inner.fmt(f),
422            Self::InvalidApprovalRuleTemplateNameException(_inner) => _inner.fmt(f),
423            Self::InvalidRepositoryNameException(_inner) => _inner.fmt(f),
424            Self::MaximumRuleTemplatesAssociatedWithRepositoryException(_inner) => _inner.fmt(f),
425            Self::RepositoryDoesNotExistException(_inner) => _inner.fmt(f),
426            Self::RepositoryNameRequiredException(_inner) => _inner.fmt(f),
427            Self::Unhandled(_inner) => {
428                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
429                    write!(f, "unhandled error ({code})")
430                } else {
431                    f.write_str("unhandled error")
432                }
433            }
434        }
435    }
436}
437impl ::aws_smithy_types::retry::ProvideErrorKind for AssociateApprovalRuleTemplateWithRepositoryError {
438    fn code(&self) -> ::std::option::Option<&str> {
439        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
440    }
441    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
442        ::std::option::Option::None
443    }
444}
445impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for AssociateApprovalRuleTemplateWithRepositoryError {
446    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
447        match self {
448            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
449            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
450            Self::EncryptionIntegrityChecksFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
451            Self::EncryptionKeyAccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
452            Self::EncryptionKeyDisabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
453            Self::EncryptionKeyNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
454            Self::EncryptionKeyUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
455            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
456            Self::InvalidRepositoryNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
457            Self::MaximumRuleTemplatesAssociatedWithRepositoryException(_inner) => {
458                ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
459            }
460            Self::RepositoryDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
461            Self::RepositoryNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
462            Self::Unhandled(_inner) => &_inner.meta,
463        }
464    }
465}
466impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for AssociateApprovalRuleTemplateWithRepositoryError {
467    fn create_unhandled_error(
468        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
469        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
470    ) -> Self {
471        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
472            source,
473            meta: meta.unwrap_or_default(),
474        })
475    }
476}
477impl ::aws_types::request_id::RequestId
478    for crate::operation::associate_approval_rule_template_with_repository::AssociateApprovalRuleTemplateWithRepositoryError
479{
480    fn request_id(&self) -> Option<&str> {
481        self.meta().request_id()
482    }
483}
484
485pub use crate::operation::associate_approval_rule_template_with_repository::_associate_approval_rule_template_with_repository_output::AssociateApprovalRuleTemplateWithRepositoryOutput;
486
487pub use crate::operation::associate_approval_rule_template_with_repository::_associate_approval_rule_template_with_repository_input::AssociateApprovalRuleTemplateWithRepositoryInput;
488
489mod _associate_approval_rule_template_with_repository_input;
490
491mod _associate_approval_rule_template_with_repository_output;
492
493/// Builders
494pub mod builders;