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