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