Skip to main content

aws_sdk_codecommit/operation/
disassociate_approval_rule_template_from_repository.rs

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