Skip to main content

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