Skip to main content

aws_sdk_codecommit/operation/
update_approval_rule_template_name.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `UpdateApprovalRuleTemplateName`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct UpdateApprovalRuleTemplateName;
6impl UpdateApprovalRuleTemplateName {
7    /// Creates a new `UpdateApprovalRuleTemplateName`
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_name::UpdateApprovalRuleTemplateNameInput,
14    ) -> ::std::result::Result<
15        crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameError,
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_name::UpdateApprovalRuleTemplateNameError>()
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_name::UpdateApprovalRuleTemplateNameOutput>()
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_name::UpdateApprovalRuleTemplateNameInput,
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            "UpdateApprovalRuleTemplateName",
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.UpdateApprovalRuleTemplateName",
65            "rpc.service" = "CodeCommit",
66            "rpc.method" = "UpdateApprovalRuleTemplateName",
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 UpdateApprovalRuleTemplateName {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UpdateApprovalRuleTemplateName");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            UpdateApprovalRuleTemplateNameRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            UpdateApprovalRuleTemplateNameResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("UpdateApprovalRuleTemplateName")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "UpdateApprovalRuleTemplateName",
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("UpdateApprovalRuleTemplateName")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
137            ))
138            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
139                UpdateApprovalRuleTemplateNameEndpointParamsInterceptor,
140            ))
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
142                crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameError,
143            >::new())
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
145                crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameError,
146            >::new())
147            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
148                crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameError,
149            >::new());
150
151        ::std::borrow::Cow::Owned(rcb)
152    }
153}
154
155#[derive(Debug)]
156struct UpdateApprovalRuleTemplateNameResponseDeserializer;
157impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UpdateApprovalRuleTemplateNameResponseDeserializer {
158    fn deserialize_nonstreaming(
159        &self,
160        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
161    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
162        let (success, status) = (response.status().is_success(), response.status().as_u16());
163        let headers = response.headers();
164        let body = response.body().bytes().expect("body loaded");
165        #[allow(unused_mut)]
166        let mut force_error = false;
167        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
168        let parse_result = if !success && status != 200 || force_error {
169            crate::protocol_serde::shape_update_approval_rule_template_name::de_update_approval_rule_template_name_http_error(status, headers, body)
170        } else {
171            crate::protocol_serde::shape_update_approval_rule_template_name::de_update_approval_rule_template_name_http_response(
172                status, headers, body,
173            )
174        };
175        crate::protocol_serde::type_erase_result(parse_result)
176    }
177}
178#[derive(Debug)]
179struct UpdateApprovalRuleTemplateNameRequestSerializer;
180impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UpdateApprovalRuleTemplateNameRequestSerializer {
181    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
182    fn serialize_input(
183        &self,
184        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
185        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
186    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
187        let input = input
188            .downcast::<crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameInput>()
189            .expect("correct type");
190        let _header_serialization_settings = _cfg
191            .load::<crate::serialization_settings::HeaderSerializationSettings>()
192            .cloned()
193            .unwrap_or_default();
194        let mut request_builder = {
195            #[allow(clippy::uninlined_format_args)]
196            fn uri_base(
197                _input: &crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameInput,
198                output: &mut ::std::string::String,
199            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
200                use ::std::fmt::Write as _;
201                ::std::write!(output, "/").expect("formatting should succeed");
202                ::std::result::Result::Ok(())
203            }
204            #[allow(clippy::unnecessary_wraps)]
205            fn update_http_builder(
206                input: &crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameInput,
207                builder: ::http_1x::request::Builder,
208            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
209                let mut uri = ::std::string::String::new();
210                uri_base(input, &mut uri)?;
211                ::std::result::Result::Ok(builder.method("POST").uri(uri))
212            }
213            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
214            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
215            builder = _header_serialization_settings.set_default_header(
216                builder,
217                ::http_1x::header::HeaderName::from_static("x-amz-target"),
218                "CodeCommit_20150413.UpdateApprovalRuleTemplateName",
219            );
220            builder
221        };
222        let body = ::aws_smithy_types::body::SdkBody::from(
223            crate::protocol_serde::shape_update_approval_rule_template_name::ser_update_approval_rule_template_name_input(&input)?,
224        );
225        if let Some(content_length) = body.content_length() {
226            let content_length = content_length.to_string();
227            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
228        }
229        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
230    }
231}
232#[derive(Debug)]
233struct UpdateApprovalRuleTemplateNameEndpointParamsInterceptor;
234
235#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
236impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UpdateApprovalRuleTemplateNameEndpointParamsInterceptor {
237    fn name(&self) -> &'static str {
238        "UpdateApprovalRuleTemplateNameEndpointParamsInterceptor"
239    }
240
241    fn read_before_execution(
242        &self,
243        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
244            '_,
245            ::aws_smithy_runtime_api::client::interceptors::context::Input,
246            ::aws_smithy_runtime_api::client::interceptors::context::Output,
247            ::aws_smithy_runtime_api::client::interceptors::context::Error,
248        >,
249        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
250    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
251        let _input = context
252            .input()
253            .downcast_ref::<UpdateApprovalRuleTemplateNameInput>()
254            .ok_or("failed to downcast to UpdateApprovalRuleTemplateNameInput")?;
255
256        let params = crate::config::endpoint::Params::builder()
257            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
258            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
259            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
260            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
261            .build()
262            .map_err(|err| {
263                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
264            })?;
265        cfg.interceptor_state()
266            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
267        ::std::result::Result::Ok(())
268    }
269}
270
271// The get_* functions below are generated from JMESPath expressions in the
272// operationContextParams trait. They target the operation's input shape.
273
274/// Error type for the `UpdateApprovalRuleTemplateNameError` operation.
275#[non_exhaustive]
276#[derive(::std::fmt::Debug)]
277pub enum UpdateApprovalRuleTemplateNameError {
278    /// <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>
279    ApprovalRuleTemplateDoesNotExistException(crate::types::error::ApprovalRuleTemplateDoesNotExistException),
280    /// <p>You cannot create an approval rule template with that name because a template with that name already exists in this Amazon Web Services Region for your Amazon Web Services account. Approval rule template names must be unique.</p>
281    ApprovalRuleTemplateNameAlreadyExistsException(crate::types::error::ApprovalRuleTemplateNameAlreadyExistsException),
282    /// <p>An approval rule template name is required, but was not specified.</p>
283    ApprovalRuleTemplateNameRequiredException(crate::types::error::ApprovalRuleTemplateNameRequiredException),
284    /// <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>
285    InvalidApprovalRuleTemplateNameException(crate::types::error::InvalidApprovalRuleTemplateNameException),
286    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
287    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
288    variable wildcard pattern and check `.code()`:
289     \
290    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
291     \
292    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UpdateApprovalRuleTemplateNameError) for what information is available for the error.")]
293    Unhandled(crate::error::sealed_unhandled::Unhandled),
294}
295impl UpdateApprovalRuleTemplateNameError {
296    /// Creates the `UpdateApprovalRuleTemplateNameError::Unhandled` variant from any error type.
297    pub fn unhandled(
298        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
299    ) -> Self {
300        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
301            source: err.into(),
302            meta: ::std::default::Default::default(),
303        })
304    }
305
306    /// Creates the `UpdateApprovalRuleTemplateNameError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
307    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
308        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
309            source: err.clone().into(),
310            meta: err,
311        })
312    }
313    ///
314    /// Returns error metadata, which includes the error code, message,
315    /// request ID, and potentially additional information.
316    ///
317    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
318        match self {
319            Self::ApprovalRuleTemplateDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
320            Self::ApprovalRuleTemplateNameAlreadyExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
321            Self::ApprovalRuleTemplateNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
322            Self::InvalidApprovalRuleTemplateNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
323            Self::Unhandled(e) => &e.meta,
324        }
325    }
326    /// Returns `true` if the error kind is `UpdateApprovalRuleTemplateNameError::ApprovalRuleTemplateDoesNotExistException`.
327    pub fn is_approval_rule_template_does_not_exist_exception(&self) -> bool {
328        matches!(self, Self::ApprovalRuleTemplateDoesNotExistException(_))
329    }
330    /// Returns `true` if the error kind is `UpdateApprovalRuleTemplateNameError::ApprovalRuleTemplateNameAlreadyExistsException`.
331    pub fn is_approval_rule_template_name_already_exists_exception(&self) -> bool {
332        matches!(self, Self::ApprovalRuleTemplateNameAlreadyExistsException(_))
333    }
334    /// Returns `true` if the error kind is `UpdateApprovalRuleTemplateNameError::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 `UpdateApprovalRuleTemplateNameError::InvalidApprovalRuleTemplateNameException`.
339    pub fn is_invalid_approval_rule_template_name_exception(&self) -> bool {
340        matches!(self, Self::InvalidApprovalRuleTemplateNameException(_))
341    }
342}
343impl ::std::error::Error for UpdateApprovalRuleTemplateNameError {
344    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
345        match self {
346            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
347            Self::ApprovalRuleTemplateNameAlreadyExistsException(_inner) => ::std::option::Option::Some(_inner),
348            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
349            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::std::option::Option::Some(_inner),
350            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
351        }
352    }
353}
354impl ::std::fmt::Display for UpdateApprovalRuleTemplateNameError {
355    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
356        match self {
357            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => _inner.fmt(f),
358            Self::ApprovalRuleTemplateNameAlreadyExistsException(_inner) => _inner.fmt(f),
359            Self::ApprovalRuleTemplateNameRequiredException(_inner) => _inner.fmt(f),
360            Self::InvalidApprovalRuleTemplateNameException(_inner) => _inner.fmt(f),
361            Self::Unhandled(_inner) => {
362                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
363                    write!(f, "unhandled error ({code})")
364                } else {
365                    f.write_str("unhandled error")
366                }
367            }
368        }
369    }
370}
371impl ::aws_smithy_types::retry::ProvideErrorKind for UpdateApprovalRuleTemplateNameError {
372    fn code(&self) -> ::std::option::Option<&str> {
373        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
374    }
375    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
376        ::std::option::Option::None
377    }
378}
379impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UpdateApprovalRuleTemplateNameError {
380    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
381        match self {
382            Self::ApprovalRuleTemplateDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
383            Self::ApprovalRuleTemplateNameAlreadyExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
384            Self::ApprovalRuleTemplateNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
385            Self::InvalidApprovalRuleTemplateNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
386            Self::Unhandled(_inner) => &_inner.meta,
387        }
388    }
389}
390impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UpdateApprovalRuleTemplateNameError {
391    fn create_unhandled_error(
392        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
393        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
394    ) -> Self {
395        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
396            source,
397            meta: meta.unwrap_or_default(),
398        })
399    }
400}
401impl ::aws_types::request_id::RequestId for crate::operation::update_approval_rule_template_name::UpdateApprovalRuleTemplateNameError {
402    fn request_id(&self) -> Option<&str> {
403        self.meta().request_id()
404    }
405}
406
407pub use crate::operation::update_approval_rule_template_name::_update_approval_rule_template_name_input::UpdateApprovalRuleTemplateNameInput;
408
409pub use crate::operation::update_approval_rule_template_name::_update_approval_rule_template_name_output::UpdateApprovalRuleTemplateNameOutput;
410
411mod _update_approval_rule_template_name_input;
412
413mod _update_approval_rule_template_name_output;
414
415/// Builders
416pub mod builders;