Skip to main content

aws_sdk_codecommit/operation/
update_approval_rule_template_content.rs

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