aws_sdk_datapipeline/operation/
report_task_progress.rs

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