aws_sdk_datapipeline/operation/
set_status.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `SetStatus`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct SetStatus;
6impl SetStatus {
7    /// Creates a new `SetStatus`
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::set_status::SetStatusInput,
14    ) -> ::std::result::Result<
15        crate::operation::set_status::SetStatusOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::set_status::SetStatusError,
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::set_status::SetStatusError>()
27                    .expect("correct error type")
28            })
29        };
30        use ::tracing::Instrument;
31        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
32            // Create a parent span for the entire operation. Includes a random, internal-only,
33            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
34            .instrument(::tracing::debug_span!(
35                "datapipeline.SetStatus",
36                "rpc.service" = "datapipeline",
37                "rpc.method" = "SetStatus",
38                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
39                "rpc.system" = "aws-api",
40            ))
41            .await
42            .map_err(map_err)?;
43        let output = context.finalize().map_err(map_err)?;
44        ::std::result::Result::Ok(
45            output
46                .downcast::<crate::operation::set_status::SetStatusOutput>()
47                .expect("correct output type"),
48        )
49    }
50
51    pub(crate) async fn orchestrate_with_stop_point(
52        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
53        input: crate::operation::set_status::SetStatusInput,
54        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
55    ) -> ::std::result::Result<
56        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
57        ::aws_smithy_runtime_api::client::result::SdkError<
58            ::aws_smithy_runtime_api::client::interceptors::context::Error,
59            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
60        >,
61    > {
62        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
63        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("datapipeline", "SetStatus", input, runtime_plugins, stop_point).await
64    }
65
66    pub(crate) fn operation_runtime_plugins(
67        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
68        client_config: &crate::config::Config,
69        config_override: ::std::option::Option<crate::config::Builder>,
70    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
71        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
72        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
73            ::aws_runtime::auth::sigv4::SCHEME_ID,
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 SetStatus {
89    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
90        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("SetStatus");
91
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
93            SetStatusRequestSerializer,
94        ));
95        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
96            SetStatusResponseDeserializer,
97        ));
98
99        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
100            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
101        ));
102
103        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("SetStatus", "datapipeline"));
104        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
105        signing_options.double_uri_encode = true;
106        signing_options.content_sha256_header = false;
107        signing_options.normalize_uri_path = true;
108        signing_options.payload_override = None;
109
110        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
111            signing_options,
112            ..::std::default::Default::default()
113        });
114
115        ::std::option::Option::Some(cfg.freeze())
116    }
117
118    fn runtime_components(
119        &self,
120        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
121    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
122        #[allow(unused_mut)]
123        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("SetStatus")
124            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
125            .with_interceptor(SetStatusEndpointParamsInterceptor)
126            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
127                crate::operation::set_status::SetStatusError,
128            >::new())
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
130                crate::operation::set_status::SetStatusError,
131            >::new())
132            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
133                crate::operation::set_status::SetStatusError,
134            >::new());
135
136        ::std::borrow::Cow::Owned(rcb)
137    }
138}
139
140#[derive(Debug)]
141struct SetStatusResponseDeserializer;
142impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for SetStatusResponseDeserializer {
143    fn deserialize_nonstreaming(
144        &self,
145        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
146    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
147        let (success, status) = (response.status().is_success(), response.status().as_u16());
148        let headers = response.headers();
149        let body = response.body().bytes().expect("body loaded");
150        #[allow(unused_mut)]
151        let mut force_error = false;
152        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
153        let parse_result = if !success && status != 200 || force_error {
154            crate::protocol_serde::shape_set_status::de_set_status_http_error(status, headers, body)
155        } else {
156            crate::protocol_serde::shape_set_status::de_set_status_http_response(status, headers, body)
157        };
158        crate::protocol_serde::type_erase_result(parse_result)
159    }
160}
161#[derive(Debug)]
162struct SetStatusRequestSerializer;
163impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for SetStatusRequestSerializer {
164    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
165    fn serialize_input(
166        &self,
167        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
168        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
169    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
170        let input = input.downcast::<crate::operation::set_status::SetStatusInput>().expect("correct type");
171        let _header_serialization_settings = _cfg
172            .load::<crate::serialization_settings::HeaderSerializationSettings>()
173            .cloned()
174            .unwrap_or_default();
175        let mut request_builder = {
176            fn uri_base(
177                _input: &crate::operation::set_status::SetStatusInput,
178                output: &mut ::std::string::String,
179            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
180                use ::std::fmt::Write as _;
181                ::std::write!(output, "/").expect("formatting should succeed");
182                ::std::result::Result::Ok(())
183            }
184            #[allow(clippy::unnecessary_wraps)]
185            fn update_http_builder(
186                input: &crate::operation::set_status::SetStatusInput,
187                builder: ::http::request::Builder,
188            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
189                let mut uri = ::std::string::String::new();
190                uri_base(input, &mut uri)?;
191                ::std::result::Result::Ok(builder.method("POST").uri(uri))
192            }
193            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
194            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
195            builder = _header_serialization_settings.set_default_header(
196                builder,
197                ::http::header::HeaderName::from_static("x-amz-target"),
198                "DataPipeline.SetStatus",
199            );
200            builder
201        };
202        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_set_status::ser_set_status_input(&input)?);
203        if let Some(content_length) = body.content_length() {
204            let content_length = content_length.to_string();
205            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
206        }
207        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
208    }
209}
210#[derive(Debug)]
211struct SetStatusEndpointParamsInterceptor;
212
213impl ::aws_smithy_runtime_api::client::interceptors::Intercept for SetStatusEndpointParamsInterceptor {
214    fn name(&self) -> &'static str {
215        "SetStatusEndpointParamsInterceptor"
216    }
217
218    fn read_before_execution(
219        &self,
220        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
221            '_,
222            ::aws_smithy_runtime_api::client::interceptors::context::Input,
223            ::aws_smithy_runtime_api::client::interceptors::context::Output,
224            ::aws_smithy_runtime_api::client::interceptors::context::Error,
225        >,
226        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
227    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
228        let _input = context
229            .input()
230            .downcast_ref::<SetStatusInput>()
231            .ok_or("failed to downcast to SetStatusInput")?;
232
233        let params = crate::config::endpoint::Params::builder()
234            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
235            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
236            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
237            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
238            .build()
239            .map_err(|err| {
240                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
241            })?;
242        cfg.interceptor_state()
243            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
244        ::std::result::Result::Ok(())
245    }
246}
247
248// The get_* functions below are generated from JMESPath expressions in the
249// operationContextParams trait. They target the operation's input shape.
250
251/// Error type for the `SetStatusError` operation.
252#[non_exhaustive]
253#[derive(::std::fmt::Debug)]
254pub enum SetStatusError {
255    /// <p>An internal service error occurred.</p>
256    InternalServiceError(crate::types::error::InternalServiceError),
257    /// <p>The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.</p>
258    InvalidRequestException(crate::types::error::InvalidRequestException),
259    /// <p>The specified pipeline has been deleted.</p>
260    PipelineDeletedException(crate::types::error::PipelineDeletedException),
261    /// <p>The specified pipeline was not found. Verify that you used the correct user and account identifiers.</p>
262    PipelineNotFoundException(crate::types::error::PipelineNotFoundException),
263    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
264    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
265    variable wildcard pattern and check `.code()`:
266     \
267    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
268     \
269    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-SetStatusError) for what information is available for the error.")]
270    Unhandled(crate::error::sealed_unhandled::Unhandled),
271}
272impl SetStatusError {
273    /// Creates the `SetStatusError::Unhandled` variant from any error type.
274    pub fn unhandled(
275        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
276    ) -> Self {
277        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
278            source: err.into(),
279            meta: ::std::default::Default::default(),
280        })
281    }
282
283    /// Creates the `SetStatusError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
284    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
285        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
286            source: err.clone().into(),
287            meta: err,
288        })
289    }
290    ///
291    /// Returns error metadata, which includes the error code, message,
292    /// request ID, and potentially additional information.
293    ///
294    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
295        match self {
296            Self::InternalServiceError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
297            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
298            Self::PipelineDeletedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
299            Self::PipelineNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
300            Self::Unhandled(e) => &e.meta,
301        }
302    }
303    /// Returns `true` if the error kind is `SetStatusError::InternalServiceError`.
304    pub fn is_internal_service_error(&self) -> bool {
305        matches!(self, Self::InternalServiceError(_))
306    }
307    /// Returns `true` if the error kind is `SetStatusError::InvalidRequestException`.
308    pub fn is_invalid_request_exception(&self) -> bool {
309        matches!(self, Self::InvalidRequestException(_))
310    }
311    /// Returns `true` if the error kind is `SetStatusError::PipelineDeletedException`.
312    pub fn is_pipeline_deleted_exception(&self) -> bool {
313        matches!(self, Self::PipelineDeletedException(_))
314    }
315    /// Returns `true` if the error kind is `SetStatusError::PipelineNotFoundException`.
316    pub fn is_pipeline_not_found_exception(&self) -> bool {
317        matches!(self, Self::PipelineNotFoundException(_))
318    }
319}
320impl ::std::error::Error for SetStatusError {
321    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
322        match self {
323            Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
324            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
325            Self::PipelineDeletedException(_inner) => ::std::option::Option::Some(_inner),
326            Self::PipelineNotFoundException(_inner) => ::std::option::Option::Some(_inner),
327            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
328        }
329    }
330}
331impl ::std::fmt::Display for SetStatusError {
332    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
333        match self {
334            Self::InternalServiceError(_inner) => _inner.fmt(f),
335            Self::InvalidRequestException(_inner) => _inner.fmt(f),
336            Self::PipelineDeletedException(_inner) => _inner.fmt(f),
337            Self::PipelineNotFoundException(_inner) => _inner.fmt(f),
338            Self::Unhandled(_inner) => {
339                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
340                    write!(f, "unhandled error ({code})")
341                } else {
342                    f.write_str("unhandled error")
343                }
344            }
345        }
346    }
347}
348impl ::aws_smithy_types::retry::ProvideErrorKind for SetStatusError {
349    fn code(&self) -> ::std::option::Option<&str> {
350        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
351    }
352    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
353        ::std::option::Option::None
354    }
355}
356impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for SetStatusError {
357    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
358        match self {
359            Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
360            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
361            Self::PipelineDeletedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
362            Self::PipelineNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
363            Self::Unhandled(_inner) => &_inner.meta,
364        }
365    }
366}
367impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for SetStatusError {
368    fn create_unhandled_error(
369        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
370        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
371    ) -> Self {
372        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
373            source,
374            meta: meta.unwrap_or_default(),
375        })
376    }
377}
378impl ::aws_types::request_id::RequestId for crate::operation::set_status::SetStatusError {
379    fn request_id(&self) -> Option<&str> {
380        self.meta().request_id()
381    }
382}
383
384pub use crate::operation::set_status::_set_status_output::SetStatusOutput;
385
386pub use crate::operation::set_status::_set_status_input::SetStatusInput;
387
388mod _set_status_input;
389
390mod _set_status_output;
391
392/// Builders
393pub mod builders;