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