aws_sdk_swf/operation/
poll_for_activity_task.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `PollForActivityTask`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct PollForActivityTask;
6impl PollForActivityTask {
7    /// Creates a new `PollForActivityTask`
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::poll_for_activity_task::PollForActivityTaskInput,
14    ) -> ::std::result::Result<
15        crate::operation::poll_for_activity_task::PollForActivityTaskOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::poll_for_activity_task::PollForActivityTaskError,
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::poll_for_activity_task::PollForActivityTaskError>()
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                "swf.PollForActivityTask",
36                "rpc.service" = "swf",
37                "rpc.method" = "PollForActivityTask",
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::poll_for_activity_task::PollForActivityTaskOutput>()
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::poll_for_activity_task::PollForActivityTaskInput,
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("swf", "PollForActivityTask", 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 PollForActivityTask {
89    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
90        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("PollForActivityTask");
91
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
93            PollForActivityTaskRequestSerializer,
94        ));
95        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
96            PollForActivityTaskResponseDeserializer,
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(
104            "PollForActivityTask",
105            "swf",
106        ));
107        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
108        signing_options.double_uri_encode = true;
109        signing_options.content_sha256_header = false;
110        signing_options.normalize_uri_path = true;
111        signing_options.payload_override = None;
112
113        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
114            signing_options,
115            ..::std::default::Default::default()
116        });
117
118        ::std::option::Option::Some(cfg.freeze())
119    }
120
121    fn runtime_components(
122        &self,
123        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
124    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
125        #[allow(unused_mut)]
126        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("PollForActivityTask")
127            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
128            .with_interceptor(PollForActivityTaskEndpointParamsInterceptor)
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
130                crate::operation::poll_for_activity_task::PollForActivityTaskError,
131            >::new())
132            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
133                crate::operation::poll_for_activity_task::PollForActivityTaskError,
134            >::new())
135            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
136                crate::operation::poll_for_activity_task::PollForActivityTaskError,
137            >::new());
138
139        ::std::borrow::Cow::Owned(rcb)
140    }
141}
142
143#[derive(Debug)]
144struct PollForActivityTaskResponseDeserializer;
145impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for PollForActivityTaskResponseDeserializer {
146    fn deserialize_nonstreaming(
147        &self,
148        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
149    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
150        let (success, status) = (response.status().is_success(), response.status().as_u16());
151        let headers = response.headers();
152        let body = response.body().bytes().expect("body loaded");
153        #[allow(unused_mut)]
154        let mut force_error = false;
155        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
156        let parse_result = if !success && status != 200 || force_error {
157            crate::protocol_serde::shape_poll_for_activity_task::de_poll_for_activity_task_http_error(status, headers, body)
158        } else {
159            crate::protocol_serde::shape_poll_for_activity_task::de_poll_for_activity_task_http_response(status, headers, body)
160        };
161        crate::protocol_serde::type_erase_result(parse_result)
162    }
163}
164#[derive(Debug)]
165struct PollForActivityTaskRequestSerializer;
166impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for PollForActivityTaskRequestSerializer {
167    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
168    fn serialize_input(
169        &self,
170        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
171        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
172    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
173        let input = input
174            .downcast::<crate::operation::poll_for_activity_task::PollForActivityTaskInput>()
175            .expect("correct type");
176        let _header_serialization_settings = _cfg
177            .load::<crate::serialization_settings::HeaderSerializationSettings>()
178            .cloned()
179            .unwrap_or_default();
180        let mut request_builder = {
181            fn uri_base(
182                _input: &crate::operation::poll_for_activity_task::PollForActivityTaskInput,
183                output: &mut ::std::string::String,
184            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
185                use ::std::fmt::Write as _;
186                ::std::write!(output, "/").expect("formatting should succeed");
187                ::std::result::Result::Ok(())
188            }
189            #[allow(clippy::unnecessary_wraps)]
190            fn update_http_builder(
191                input: &crate::operation::poll_for_activity_task::PollForActivityTaskInput,
192                builder: ::http::request::Builder,
193            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
194                let mut uri = ::std::string::String::new();
195                uri_base(input, &mut uri)?;
196                ::std::result::Result::Ok(builder.method("POST").uri(uri))
197            }
198            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
199            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.0");
200            builder = _header_serialization_settings.set_default_header(
201                builder,
202                ::http::header::HeaderName::from_static("x-amz-target"),
203                "SimpleWorkflowService.PollForActivityTask",
204            );
205            builder
206        };
207        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_poll_for_activity_task::ser_poll_for_activity_task_input(
208            &input,
209        )?);
210        if let Some(content_length) = body.content_length() {
211            let content_length = content_length.to_string();
212            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
213        }
214        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
215    }
216}
217#[derive(Debug)]
218struct PollForActivityTaskEndpointParamsInterceptor;
219
220impl ::aws_smithy_runtime_api::client::interceptors::Intercept for PollForActivityTaskEndpointParamsInterceptor {
221    fn name(&self) -> &'static str {
222        "PollForActivityTaskEndpointParamsInterceptor"
223    }
224
225    fn read_before_execution(
226        &self,
227        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
228            '_,
229            ::aws_smithy_runtime_api::client::interceptors::context::Input,
230            ::aws_smithy_runtime_api::client::interceptors::context::Output,
231            ::aws_smithy_runtime_api::client::interceptors::context::Error,
232        >,
233        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
234    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
235        let _input = context
236            .input()
237            .downcast_ref::<PollForActivityTaskInput>()
238            .ok_or("failed to downcast to PollForActivityTaskInput")?;
239
240        let params = crate::config::endpoint::Params::builder()
241            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
242            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
243            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
244            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
245            .build()
246            .map_err(|err| {
247                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
248            })?;
249        cfg.interceptor_state()
250            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
251        ::std::result::Result::Ok(())
252    }
253}
254
255// The get_* functions below are generated from JMESPath expressions in the
256// operationContextParams trait. They target the operation's input shape.
257
258/// Error type for the `PollForActivityTaskError` operation.
259#[non_exhaustive]
260#[derive(::std::fmt::Debug)]
261pub enum PollForActivityTaskError {
262    /// <p>Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.</p>
263    LimitExceededFault(crate::types::error::LimitExceededFault),
264    /// <p>Returned when the caller doesn't have sufficient permissions to invoke the action.</p>
265    OperationNotPermittedFault(crate::types::error::OperationNotPermittedFault),
266    /// <p>Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.</p>
267    UnknownResourceFault(crate::types::error::UnknownResourceFault),
268    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
269    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
270    variable wildcard pattern and check `.code()`:
271     \
272    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
273     \
274    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-PollForActivityTaskError) for what information is available for the error.")]
275    Unhandled(crate::error::sealed_unhandled::Unhandled),
276}
277impl PollForActivityTaskError {
278    /// Creates the `PollForActivityTaskError::Unhandled` variant from any error type.
279    pub fn unhandled(
280        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
281    ) -> Self {
282        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
283            source: err.into(),
284            meta: ::std::default::Default::default(),
285        })
286    }
287
288    /// Creates the `PollForActivityTaskError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
289    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
290        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
291            source: err.clone().into(),
292            meta: err,
293        })
294    }
295    ///
296    /// Returns error metadata, which includes the error code, message,
297    /// request ID, and potentially additional information.
298    ///
299    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
300        match self {
301            Self::LimitExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
302            Self::OperationNotPermittedFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
303            Self::UnknownResourceFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
304            Self::Unhandled(e) => &e.meta,
305        }
306    }
307    /// Returns `true` if the error kind is `PollForActivityTaskError::LimitExceededFault`.
308    pub fn is_limit_exceeded_fault(&self) -> bool {
309        matches!(self, Self::LimitExceededFault(_))
310    }
311    /// Returns `true` if the error kind is `PollForActivityTaskError::OperationNotPermittedFault`.
312    pub fn is_operation_not_permitted_fault(&self) -> bool {
313        matches!(self, Self::OperationNotPermittedFault(_))
314    }
315    /// Returns `true` if the error kind is `PollForActivityTaskError::UnknownResourceFault`.
316    pub fn is_unknown_resource_fault(&self) -> bool {
317        matches!(self, Self::UnknownResourceFault(_))
318    }
319}
320impl ::std::error::Error for PollForActivityTaskError {
321    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
322        match self {
323            Self::LimitExceededFault(_inner) => ::std::option::Option::Some(_inner),
324            Self::OperationNotPermittedFault(_inner) => ::std::option::Option::Some(_inner),
325            Self::UnknownResourceFault(_inner) => ::std::option::Option::Some(_inner),
326            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
327        }
328    }
329}
330impl ::std::fmt::Display for PollForActivityTaskError {
331    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
332        match self {
333            Self::LimitExceededFault(_inner) => _inner.fmt(f),
334            Self::OperationNotPermittedFault(_inner) => _inner.fmt(f),
335            Self::UnknownResourceFault(_inner) => _inner.fmt(f),
336            Self::Unhandled(_inner) => {
337                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
338                    write!(f, "unhandled error ({code})")
339                } else {
340                    f.write_str("unhandled error")
341                }
342            }
343        }
344    }
345}
346impl ::aws_smithy_types::retry::ProvideErrorKind for PollForActivityTaskError {
347    fn code(&self) -> ::std::option::Option<&str> {
348        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
349    }
350    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
351        ::std::option::Option::None
352    }
353}
354impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for PollForActivityTaskError {
355    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
356        match self {
357            Self::LimitExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
358            Self::OperationNotPermittedFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
359            Self::UnknownResourceFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
360            Self::Unhandled(_inner) => &_inner.meta,
361        }
362    }
363}
364impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for PollForActivityTaskError {
365    fn create_unhandled_error(
366        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
367        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
368    ) -> Self {
369        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
370            source,
371            meta: meta.unwrap_or_default(),
372        })
373    }
374}
375impl ::aws_types::request_id::RequestId for crate::operation::poll_for_activity_task::PollForActivityTaskError {
376    fn request_id(&self) -> Option<&str> {
377        self.meta().request_id()
378    }
379}
380
381pub use crate::operation::poll_for_activity_task::_poll_for_activity_task_output::PollForActivityTaskOutput;
382
383pub use crate::operation::poll_for_activity_task::_poll_for_activity_task_input::PollForActivityTaskInput;
384
385mod _poll_for_activity_task_input;
386
387mod _poll_for_activity_task_output;
388
389/// Builders
390pub mod builders;