aws_sdk_datapipeline/operation/
report_task_runner_heartbeat.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ReportTaskRunnerHeartbeat`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ReportTaskRunnerHeartbeat;
6impl ReportTaskRunnerHeartbeat {
7    /// Creates a new `ReportTaskRunnerHeartbeat`
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_runner_heartbeat::ReportTaskRunnerHeartbeatInput,
14    ) -> ::std::result::Result<
15        crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatError,
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_runner_heartbeat::ReportTaskRunnerHeartbeatError>()
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_runner_heartbeat::ReportTaskRunnerHeartbeatOutput>()
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_runner_heartbeat::ReportTaskRunnerHeartbeatInput,
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(
54            "datapipeline",
55            "ReportTaskRunnerHeartbeat",
56            input,
57            runtime_plugins,
58            stop_point,
59        )
60        .await
61    }
62
63    pub(crate) fn operation_runtime_plugins(
64        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
65        client_config: &crate::config::Config,
66        config_override: ::std::option::Option<crate::config::Builder>,
67    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
68        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
69        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
70            ::aws_runtime::auth::sigv4::SCHEME_ID,
71        ]));
72        if let ::std::option::Option::Some(config_override) = config_override {
73            for plugin in config_override.runtime_plugins.iter().cloned() {
74                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
75            }
76            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
77                config_override,
78                client_config.config.clone(),
79                &client_config.runtime_components,
80            ));
81        }
82        runtime_plugins
83    }
84}
85impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ReportTaskRunnerHeartbeat {
86    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
87        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ReportTaskRunnerHeartbeat");
88
89        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
90            ReportTaskRunnerHeartbeatRequestSerializer,
91        ));
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
93            ReportTaskRunnerHeartbeatResponseDeserializer,
94        ));
95
96        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
97            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
101            "ReportTaskRunnerHeartbeat",
102            "datapipeline",
103        ));
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("ReportTaskRunnerHeartbeat")
124            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
125            .with_interceptor(ReportTaskRunnerHeartbeatEndpointParamsInterceptor)
126            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
127                crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatError,
128            >::new())
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
130                crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatError,
131            >::new())
132            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
133                crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatError,
134            >::new());
135
136        ::std::borrow::Cow::Owned(rcb)
137    }
138}
139
140#[derive(Debug)]
141struct ReportTaskRunnerHeartbeatResponseDeserializer;
142impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ReportTaskRunnerHeartbeatResponseDeserializer {
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_report_task_runner_heartbeat::de_report_task_runner_heartbeat_http_error(status, headers, body)
155        } else {
156            crate::protocol_serde::shape_report_task_runner_heartbeat::de_report_task_runner_heartbeat_http_response(status, headers, body)
157        };
158        crate::protocol_serde::type_erase_result(parse_result)
159    }
160}
161#[derive(Debug)]
162struct ReportTaskRunnerHeartbeatRequestSerializer;
163impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ReportTaskRunnerHeartbeatRequestSerializer {
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
171            .downcast::<crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatInput>()
172            .expect("correct type");
173        let _header_serialization_settings = _cfg
174            .load::<crate::serialization_settings::HeaderSerializationSettings>()
175            .cloned()
176            .unwrap_or_default();
177        let mut request_builder = {
178            fn uri_base(
179                _input: &crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatInput,
180                output: &mut ::std::string::String,
181            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
182                use ::std::fmt::Write as _;
183                ::std::write!(output, "/").expect("formatting should succeed");
184                ::std::result::Result::Ok(())
185            }
186            #[allow(clippy::unnecessary_wraps)]
187            fn update_http_builder(
188                input: &crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatInput,
189                builder: ::http::request::Builder,
190            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
191                let mut uri = ::std::string::String::new();
192                uri_base(input, &mut uri)?;
193                ::std::result::Result::Ok(builder.method("POST").uri(uri))
194            }
195            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
196            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
197            builder = _header_serialization_settings.set_default_header(
198                builder,
199                ::http::header::HeaderName::from_static("x-amz-target"),
200                "DataPipeline.ReportTaskRunnerHeartbeat",
201            );
202            builder
203        };
204        let body = ::aws_smithy_types::body::SdkBody::from(
205            crate::protocol_serde::shape_report_task_runner_heartbeat::ser_report_task_runner_heartbeat_input(&input)?,
206        );
207        if let Some(content_length) = body.content_length() {
208            let content_length = content_length.to_string();
209            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
210        }
211        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
212    }
213}
214#[derive(Debug)]
215struct ReportTaskRunnerHeartbeatEndpointParamsInterceptor;
216
217impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ReportTaskRunnerHeartbeatEndpointParamsInterceptor {
218    fn name(&self) -> &'static str {
219        "ReportTaskRunnerHeartbeatEndpointParamsInterceptor"
220    }
221
222    fn read_before_execution(
223        &self,
224        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
225            '_,
226            ::aws_smithy_runtime_api::client::interceptors::context::Input,
227            ::aws_smithy_runtime_api::client::interceptors::context::Output,
228            ::aws_smithy_runtime_api::client::interceptors::context::Error,
229        >,
230        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
231    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
232        let _input = context
233            .input()
234            .downcast_ref::<ReportTaskRunnerHeartbeatInput>()
235            .ok_or("failed to downcast to ReportTaskRunnerHeartbeatInput")?;
236
237        let params = crate::config::endpoint::Params::builder()
238            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
239            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
240            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
241            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
242            .build()
243            .map_err(|err| {
244                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
245            })?;
246        cfg.interceptor_state()
247            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
248        ::std::result::Result::Ok(())
249    }
250}
251
252// The get_* functions below are generated from JMESPath expressions in the
253// operationContextParams trait. They target the operation's input shape.
254
255/// Error type for the `ReportTaskRunnerHeartbeatError` operation.
256#[non_exhaustive]
257#[derive(::std::fmt::Debug)]
258pub enum ReportTaskRunnerHeartbeatError {
259    /// <p>An internal service error occurred.</p>
260    InternalServiceError(crate::types::error::InternalServiceError),
261    /// <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>
262    InvalidRequestException(crate::types::error::InvalidRequestException),
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-ReportTaskRunnerHeartbeatError) for what information is available for the error.")]
270    Unhandled(crate::error::sealed_unhandled::Unhandled),
271}
272impl ReportTaskRunnerHeartbeatError {
273    /// Creates the `ReportTaskRunnerHeartbeatError::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 `ReportTaskRunnerHeartbeatError::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::Unhandled(e) => &e.meta,
299        }
300    }
301    /// Returns `true` if the error kind is `ReportTaskRunnerHeartbeatError::InternalServiceError`.
302    pub fn is_internal_service_error(&self) -> bool {
303        matches!(self, Self::InternalServiceError(_))
304    }
305    /// Returns `true` if the error kind is `ReportTaskRunnerHeartbeatError::InvalidRequestException`.
306    pub fn is_invalid_request_exception(&self) -> bool {
307        matches!(self, Self::InvalidRequestException(_))
308    }
309}
310impl ::std::error::Error for ReportTaskRunnerHeartbeatError {
311    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
312        match self {
313            Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
314            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
315            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
316        }
317    }
318}
319impl ::std::fmt::Display for ReportTaskRunnerHeartbeatError {
320    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
321        match self {
322            Self::InternalServiceError(_inner) => _inner.fmt(f),
323            Self::InvalidRequestException(_inner) => _inner.fmt(f),
324            Self::Unhandled(_inner) => {
325                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
326                    write!(f, "unhandled error ({code})")
327                } else {
328                    f.write_str("unhandled error")
329                }
330            }
331        }
332    }
333}
334impl ::aws_smithy_types::retry::ProvideErrorKind for ReportTaskRunnerHeartbeatError {
335    fn code(&self) -> ::std::option::Option<&str> {
336        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
337    }
338    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
339        ::std::option::Option::None
340    }
341}
342impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ReportTaskRunnerHeartbeatError {
343    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
344        match self {
345            Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
346            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
347            Self::Unhandled(_inner) => &_inner.meta,
348        }
349    }
350}
351impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ReportTaskRunnerHeartbeatError {
352    fn create_unhandled_error(
353        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
354        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
355    ) -> Self {
356        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
357            source,
358            meta: meta.unwrap_or_default(),
359        })
360    }
361}
362impl ::aws_types::request_id::RequestId for crate::operation::report_task_runner_heartbeat::ReportTaskRunnerHeartbeatError {
363    fn request_id(&self) -> Option<&str> {
364        self.meta().request_id()
365    }
366}
367
368pub use crate::operation::report_task_runner_heartbeat::_report_task_runner_heartbeat_output::ReportTaskRunnerHeartbeatOutput;
369
370pub use crate::operation::report_task_runner_heartbeat::_report_task_runner_heartbeat_input::ReportTaskRunnerHeartbeatInput;
371
372mod _report_task_runner_heartbeat_input;
373
374mod _report_task_runner_heartbeat_output;
375
376/// Builders
377pub mod builders;