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