Skip to main content

aws_sdk_codecommit/operation/
batch_disassociate_approval_rule_template_from_repositories.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `BatchDisassociateApprovalRuleTemplateFromRepositories`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct BatchDisassociateApprovalRuleTemplateFromRepositories;
6impl BatchDisassociateApprovalRuleTemplateFromRepositories {
7    /// Creates a new `BatchDisassociateApprovalRuleTemplateFromRepositories`
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::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput,
14    ) -> ::std::result::Result<
15        crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError,
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::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError>().expect("correct error type")
27                            })
28        };
29        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
30            .await
31            .map_err(map_err)?;
32        let output = context.finalize().map_err(map_err)?;
33        ::std::result::Result::Ok(output.downcast::<crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesOutput>().expect("correct output type"))
34    }
35
36    pub(crate) async fn orchestrate_with_stop_point(
37        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
38        input: crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput,
39        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
40    ) -> ::std::result::Result<
41        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
42        ::aws_smithy_runtime_api::client::result::SdkError<
43            ::aws_smithy_runtime_api::client::interceptors::context::Error,
44            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
45        >,
46    > {
47        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
48        use ::tracing::Instrument;
49        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
50            "CodeCommit",
51            "BatchDisassociateApprovalRuleTemplateFromRepositories",
52            input,
53            runtime_plugins,
54            stop_point,
55        )
56        // Create a parent span for the entire operation. Includes a random, internal-only,
57        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
58        .instrument(::tracing::debug_span!(
59            "CodeCommit.BatchDisassociateApprovalRuleTemplateFromRepositories",
60            "rpc.service" = "CodeCommit",
61            "rpc.method" = "BatchDisassociateApprovalRuleTemplateFromRepositories",
62            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
63            "rpc.system" = "aws-api",
64        ))
65        .await
66    }
67
68    pub(crate) fn operation_runtime_plugins(
69        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
70        client_config: &crate::config::Config,
71        config_override: ::std::option::Option<crate::config::Builder>,
72    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
73        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
74
75        if let ::std::option::Option::Some(config_override) = config_override {
76            for plugin in config_override.runtime_plugins.iter().cloned() {
77                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
78            }
79            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
80                config_override,
81                client_config.config.clone(),
82                &client_config.runtime_components,
83            ));
84        }
85        runtime_plugins
86    }
87}
88impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for BatchDisassociateApprovalRuleTemplateFromRepositories {
89    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
90        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("BatchDisassociateApprovalRuleTemplateFromRepositories");
91
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
93            BatchDisassociateApprovalRuleTemplateFromRepositoriesRequestSerializer,
94        ));
95        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
96            BatchDisassociateApprovalRuleTemplateFromRepositoriesResponseDeserializer,
97        ));
98
99        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
100            crate::config::auth::Params::builder()
101                .operation_name("BatchDisassociateApprovalRuleTemplateFromRepositories")
102                .build()
103                .expect("required fields set"),
104        ));
105
106        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
107            "BatchDisassociateApprovalRuleTemplateFromRepositories",
108            "CodeCommit",
109        ));
110        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
111        signing_options.double_uri_encode = true;
112        signing_options.content_sha256_header = false;
113        signing_options.normalize_uri_path = true;
114        signing_options.payload_override = None;
115
116        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
117            signing_options,
118            ..::std::default::Default::default()
119        });
120
121        ::std::option::Option::Some(cfg.freeze())
122    }
123
124    fn runtime_components(
125        &self,
126        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
127    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
128        #[allow(unused_mut)]
129        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new(
130            "BatchDisassociateApprovalRuleTemplateFromRepositories",
131        )
132        .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
133        .with_interceptor(BatchDisassociateApprovalRuleTemplateFromRepositoriesEndpointParamsInterceptor)
134        .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
135            crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError,
136        >::new())
137        .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
138            crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError,
139        >::new())
140        .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
141            crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError,
142        >::new());
143
144        ::std::borrow::Cow::Owned(rcb)
145    }
146}
147
148#[derive(Debug)]
149struct BatchDisassociateApprovalRuleTemplateFromRepositoriesResponseDeserializer;
150impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for BatchDisassociateApprovalRuleTemplateFromRepositoriesResponseDeserializer {
151    fn deserialize_nonstreaming(
152        &self,
153        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
154    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
155        let (success, status) = (response.status().is_success(), response.status().as_u16());
156        let headers = response.headers();
157        let body = response.body().bytes().expect("body loaded");
158        #[allow(unused_mut)]
159        let mut force_error = false;
160        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
161        let parse_result = if !success && status != 200 || force_error {
162            crate::protocol_serde::shape_batch_disassociate_approval_rule_template_from_repositories::de_batch_disassociate_approval_rule_template_from_repositories_http_error(status, headers, body)
163        } else {
164            crate::protocol_serde::shape_batch_disassociate_approval_rule_template_from_repositories::de_batch_disassociate_approval_rule_template_from_repositories_http_response(status, headers, body)
165        };
166        crate::protocol_serde::type_erase_result(parse_result)
167    }
168}
169#[derive(Debug)]
170struct BatchDisassociateApprovalRuleTemplateFromRepositoriesRequestSerializer;
171impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for BatchDisassociateApprovalRuleTemplateFromRepositoriesRequestSerializer {
172    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
173    fn serialize_input(
174        &self,
175        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
176        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
177    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
178        let input = input.downcast::<crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput>().expect("correct type");
179        let _header_serialization_settings = _cfg
180            .load::<crate::serialization_settings::HeaderSerializationSettings>()
181            .cloned()
182            .unwrap_or_default();
183        let mut request_builder = {
184            #[allow(clippy::uninlined_format_args)]
185            fn uri_base(
186                _input: &crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput,
187                output: &mut ::std::string::String,
188            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
189                use ::std::fmt::Write as _;
190                ::std::write!(output, "/").expect("formatting should succeed");
191                ::std::result::Result::Ok(())
192            }
193            #[allow(clippy::unnecessary_wraps)]
194            fn update_http_builder(
195                input: &crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput,
196                builder: ::http_1x::request::Builder,
197            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
198                let mut uri = ::std::string::String::new();
199                uri_base(input, &mut uri)?;
200                ::std::result::Result::Ok(builder.method("POST").uri(uri))
201            }
202            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
203            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
204            builder = _header_serialization_settings.set_default_header(
205                builder,
206                ::http_1x::header::HeaderName::from_static("x-amz-target"),
207                "CodeCommit_20150413.BatchDisassociateApprovalRuleTemplateFromRepositories",
208            );
209            builder
210        };
211        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_batch_disassociate_approval_rule_template_from_repositories::ser_batch_disassociate_approval_rule_template_from_repositories_input(&input)?);
212        if let Some(content_length) = body.content_length() {
213            let content_length = content_length.to_string();
214            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
215        }
216        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
217    }
218}
219#[derive(Debug)]
220struct BatchDisassociateApprovalRuleTemplateFromRepositoriesEndpointParamsInterceptor;
221
222impl ::aws_smithy_runtime_api::client::interceptors::Intercept for BatchDisassociateApprovalRuleTemplateFromRepositoriesEndpointParamsInterceptor {
223    fn name(&self) -> &'static str {
224        "BatchDisassociateApprovalRuleTemplateFromRepositoriesEndpointParamsInterceptor"
225    }
226
227    fn read_before_execution(
228        &self,
229        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
230            '_,
231            ::aws_smithy_runtime_api::client::interceptors::context::Input,
232            ::aws_smithy_runtime_api::client::interceptors::context::Output,
233            ::aws_smithy_runtime_api::client::interceptors::context::Error,
234        >,
235        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
236    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
237        let _input = context
238            .input()
239            .downcast_ref::<BatchDisassociateApprovalRuleTemplateFromRepositoriesInput>()
240            .ok_or("failed to downcast to BatchDisassociateApprovalRuleTemplateFromRepositoriesInput")?;
241
242        let params = crate::config::endpoint::Params::builder()
243            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
244            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
245            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
246            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
247            .build()
248            .map_err(|err| {
249                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
250            })?;
251        cfg.interceptor_state()
252            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
253        ::std::result::Result::Ok(())
254    }
255}
256
257// The get_* functions below are generated from JMESPath expressions in the
258// operationContextParams trait. They target the operation's input shape.
259
260/// Error type for the `BatchDisassociateApprovalRuleTemplateFromRepositoriesError` operation.
261#[non_exhaustive]
262#[derive(::std::fmt::Debug)]
263pub enum BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
264    /// <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>
265    ApprovalRuleTemplateDoesNotExistException(crate::types::error::ApprovalRuleTemplateDoesNotExistException),
266    /// <p>An approval rule template name is required, but was not specified.</p>
267    ApprovalRuleTemplateNameRequiredException(crate::types::error::ApprovalRuleTemplateNameRequiredException),
268    /// <p>An encryption integrity check failed.</p>
269    EncryptionIntegrityChecksFailedException(crate::types::error::EncryptionIntegrityChecksFailedException),
270    /// <p>An encryption key could not be accessed.</p>
271    EncryptionKeyAccessDeniedException(crate::types::error::EncryptionKeyAccessDeniedException),
272    /// <p>The encryption key is disabled.</p>
273    EncryptionKeyDisabledException(crate::types::error::EncryptionKeyDisabledException),
274    /// <p>No encryption key was found.</p>
275    EncryptionKeyNotFoundException(crate::types::error::EncryptionKeyNotFoundException),
276    /// <p>The encryption key is not available.</p>
277    EncryptionKeyUnavailableException(crate::types::error::EncryptionKeyUnavailableException),
278    /// <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>
279    InvalidApprovalRuleTemplateNameException(crate::types::error::InvalidApprovalRuleTemplateNameException),
280    /// <p>The maximum number of allowed repository names was exceeded. Currently, this number is 100.</p>
281    MaximumRepositoryNamesExceededException(crate::types::error::MaximumRepositoryNamesExceededException),
282    /// <p>At least one repository name object is required, but was not specified.</p>
283    RepositoryNamesRequiredException(crate::types::error::RepositoryNamesRequiredException),
284    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
285    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
286    variable wildcard pattern and check `.code()`:
287     \
288    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
289     \
290    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-BatchDisassociateApprovalRuleTemplateFromRepositoriesError) for what information is available for the error.")]
291    Unhandled(crate::error::sealed_unhandled::Unhandled),
292}
293impl BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
294    /// Creates the `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::Unhandled` variant from any error type.
295    pub fn unhandled(
296        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
297    ) -> Self {
298        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
299            source: err.into(),
300            meta: ::std::default::Default::default(),
301        })
302    }
303
304    /// Creates the `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
305    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
306        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
307            source: err.clone().into(),
308            meta: err,
309        })
310    }
311    ///
312    /// Returns error metadata, which includes the error code, message,
313    /// request ID, and potentially additional information.
314    ///
315    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
316        match self {
317            Self::ApprovalRuleTemplateDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
318            Self::ApprovalRuleTemplateNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
319            Self::EncryptionIntegrityChecksFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
320            Self::EncryptionKeyAccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
321            Self::EncryptionKeyDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
322            Self::EncryptionKeyNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
323            Self::EncryptionKeyUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
324            Self::InvalidApprovalRuleTemplateNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
325            Self::MaximumRepositoryNamesExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
326            Self::RepositoryNamesRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
327            Self::Unhandled(e) => &e.meta,
328        }
329    }
330    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::ApprovalRuleTemplateDoesNotExistException`.
331    pub fn is_approval_rule_template_does_not_exist_exception(&self) -> bool {
332        matches!(self, Self::ApprovalRuleTemplateDoesNotExistException(_))
333    }
334    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::ApprovalRuleTemplateNameRequiredException`.
335    pub fn is_approval_rule_template_name_required_exception(&self) -> bool {
336        matches!(self, Self::ApprovalRuleTemplateNameRequiredException(_))
337    }
338    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::EncryptionIntegrityChecksFailedException`.
339    pub fn is_encryption_integrity_checks_failed_exception(&self) -> bool {
340        matches!(self, Self::EncryptionIntegrityChecksFailedException(_))
341    }
342    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::EncryptionKeyAccessDeniedException`.
343    pub fn is_encryption_key_access_denied_exception(&self) -> bool {
344        matches!(self, Self::EncryptionKeyAccessDeniedException(_))
345    }
346    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::EncryptionKeyDisabledException`.
347    pub fn is_encryption_key_disabled_exception(&self) -> bool {
348        matches!(self, Self::EncryptionKeyDisabledException(_))
349    }
350    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::EncryptionKeyNotFoundException`.
351    pub fn is_encryption_key_not_found_exception(&self) -> bool {
352        matches!(self, Self::EncryptionKeyNotFoundException(_))
353    }
354    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::EncryptionKeyUnavailableException`.
355    pub fn is_encryption_key_unavailable_exception(&self) -> bool {
356        matches!(self, Self::EncryptionKeyUnavailableException(_))
357    }
358    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::InvalidApprovalRuleTemplateNameException`.
359    pub fn is_invalid_approval_rule_template_name_exception(&self) -> bool {
360        matches!(self, Self::InvalidApprovalRuleTemplateNameException(_))
361    }
362    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::MaximumRepositoryNamesExceededException`.
363    pub fn is_maximum_repository_names_exceeded_exception(&self) -> bool {
364        matches!(self, Self::MaximumRepositoryNamesExceededException(_))
365    }
366    /// Returns `true` if the error kind is `BatchDisassociateApprovalRuleTemplateFromRepositoriesError::RepositoryNamesRequiredException`.
367    pub fn is_repository_names_required_exception(&self) -> bool {
368        matches!(self, Self::RepositoryNamesRequiredException(_))
369    }
370}
371impl ::std::error::Error for BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
372    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
373        match self {
374            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
375            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
376            Self::EncryptionIntegrityChecksFailedException(_inner) => ::std::option::Option::Some(_inner),
377            Self::EncryptionKeyAccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
378            Self::EncryptionKeyDisabledException(_inner) => ::std::option::Option::Some(_inner),
379            Self::EncryptionKeyNotFoundException(_inner) => ::std::option::Option::Some(_inner),
380            Self::EncryptionKeyUnavailableException(_inner) => ::std::option::Option::Some(_inner),
381            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::std::option::Option::Some(_inner),
382            Self::MaximumRepositoryNamesExceededException(_inner) => ::std::option::Option::Some(_inner),
383            Self::RepositoryNamesRequiredException(_inner) => ::std::option::Option::Some(_inner),
384            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
385        }
386    }
387}
388impl ::std::fmt::Display for BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
389    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
390        match self {
391            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => _inner.fmt(f),
392            Self::ApprovalRuleTemplateNameRequiredException(_inner) => _inner.fmt(f),
393            Self::EncryptionIntegrityChecksFailedException(_inner) => _inner.fmt(f),
394            Self::EncryptionKeyAccessDeniedException(_inner) => _inner.fmt(f),
395            Self::EncryptionKeyDisabledException(_inner) => _inner.fmt(f),
396            Self::EncryptionKeyNotFoundException(_inner) => _inner.fmt(f),
397            Self::EncryptionKeyUnavailableException(_inner) => _inner.fmt(f),
398            Self::InvalidApprovalRuleTemplateNameException(_inner) => _inner.fmt(f),
399            Self::MaximumRepositoryNamesExceededException(_inner) => _inner.fmt(f),
400            Self::RepositoryNamesRequiredException(_inner) => _inner.fmt(f),
401            Self::Unhandled(_inner) => {
402                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
403                    write!(f, "unhandled error ({code})")
404                } else {
405                    f.write_str("unhandled error")
406                }
407            }
408        }
409    }
410}
411impl ::aws_smithy_types::retry::ProvideErrorKind for BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
412    fn code(&self) -> ::std::option::Option<&str> {
413        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
414    }
415    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
416        ::std::option::Option::None
417    }
418}
419impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
420    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
421        match self {
422            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::EncryptionIntegrityChecksFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
425            Self::EncryptionKeyAccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
426            Self::EncryptionKeyDisabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
427            Self::EncryptionKeyNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
428            Self::EncryptionKeyUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
429            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
430            Self::MaximumRepositoryNamesExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
431            Self::RepositoryNamesRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
432            Self::Unhandled(_inner) => &_inner.meta,
433        }
434    }
435}
436impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for BatchDisassociateApprovalRuleTemplateFromRepositoriesError {
437    fn create_unhandled_error(
438        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
439        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
440    ) -> Self {
441        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
442            source,
443            meta: meta.unwrap_or_default(),
444        })
445    }
446}
447impl ::aws_types::request_id::RequestId
448    for crate::operation::batch_disassociate_approval_rule_template_from_repositories::BatchDisassociateApprovalRuleTemplateFromRepositoriesError
449{
450    fn request_id(&self) -> Option<&str> {
451        self.meta().request_id()
452    }
453}
454
455pub use crate::operation::batch_disassociate_approval_rule_template_from_repositories::_batch_disassociate_approval_rule_template_from_repositories_input::BatchDisassociateApprovalRuleTemplateFromRepositoriesInput;
456
457pub use crate::operation::batch_disassociate_approval_rule_template_from_repositories::_batch_disassociate_approval_rule_template_from_repositories_output::BatchDisassociateApprovalRuleTemplateFromRepositoriesOutput;
458
459mod _batch_disassociate_approval_rule_template_from_repositories_input;
460
461mod _batch_disassociate_approval_rule_template_from_repositories_output;
462
463/// Builders
464pub mod builders;