aws_sdk_codecatalyst/operation/
list_workflows.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ListWorkflows`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ListWorkflows;
6impl ListWorkflows {
7    /// Creates a new `ListWorkflows`
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::list_workflows::ListWorkflowsInput,
14    ) -> ::std::result::Result<
15        crate::operation::list_workflows::ListWorkflowsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::list_workflows::ListWorkflowsError,
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::list_workflows::ListWorkflowsError>()
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::list_workflows::ListWorkflowsOutput>()
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::list_workflows::ListWorkflowsInput,
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("CodeCatalyst", "ListWorkflows", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "CodeCatalyst.ListWorkflows",
59                "rpc.service" = "CodeCatalyst",
60                "rpc.method" = "ListWorkflows",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73
74        if let ::std::option::Option::Some(config_override) = config_override {
75            for plugin in config_override.runtime_plugins.iter().cloned() {
76                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
77            }
78            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
79                config_override,
80                client_config.config.clone(),
81                &client_config.runtime_components,
82            ));
83        }
84        runtime_plugins
85    }
86}
87impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ListWorkflows {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ListWorkflows");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            ListWorkflowsRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            ListWorkflowsResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("ListWorkflows")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "ListWorkflows",
107            "CodeCatalyst",
108        ));
109
110        ::std::option::Option::Some(cfg.freeze())
111    }
112
113    fn runtime_components(
114        &self,
115        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
116    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
117        #[allow(unused_mut)]
118        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ListWorkflows")
119            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
120            .with_interceptor(ListWorkflowsEndpointParamsInterceptor)
121            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
122                crate::operation::list_workflows::ListWorkflowsError,
123            >::new())
124            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
125                crate::operation::list_workflows::ListWorkflowsError,
126            >::new())
127            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
128                crate::operation::list_workflows::ListWorkflowsError,
129            >::new());
130
131        ::std::borrow::Cow::Owned(rcb)
132    }
133}
134
135#[derive(Debug)]
136struct ListWorkflowsResponseDeserializer;
137impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListWorkflowsResponseDeserializer {
138    fn deserialize_nonstreaming(
139        &self,
140        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
141    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
142        let (success, status) = (response.status().is_success(), response.status().as_u16());
143        let headers = response.headers();
144        let body = response.body().bytes().expect("body loaded");
145        #[allow(unused_mut)]
146        let mut force_error = false;
147        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
148        let parse_result = if !success && status != 200 || force_error {
149            crate::protocol_serde::shape_list_workflows::de_list_workflows_http_error(status, headers, body)
150        } else {
151            crate::protocol_serde::shape_list_workflows::de_list_workflows_http_response(status, headers, body)
152        };
153        crate::protocol_serde::type_erase_result(parse_result)
154    }
155}
156#[derive(Debug)]
157struct ListWorkflowsRequestSerializer;
158impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ListWorkflowsRequestSerializer {
159    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
160    fn serialize_input(
161        &self,
162        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
163        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
164    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
165        let input = input
166            .downcast::<crate::operation::list_workflows::ListWorkflowsInput>()
167            .expect("correct type");
168        let _header_serialization_settings = _cfg
169            .load::<crate::serialization_settings::HeaderSerializationSettings>()
170            .cloned()
171            .unwrap_or_default();
172        let mut request_builder = {
173            #[allow(clippy::uninlined_format_args)]
174            fn uri_base(
175                _input: &crate::operation::list_workflows::ListWorkflowsInput,
176                output: &mut ::std::string::String,
177            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
178                use ::std::fmt::Write as _;
179                let input_1 = &_input.space_name;
180                let input_1 = input_1
181                    .as_ref()
182                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
183                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
184                if space_name.is_empty() {
185                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
186                        "space_name",
187                        "cannot be empty or unset",
188                    ));
189                }
190                let input_2 = &_input.project_name;
191                let input_2 = input_2
192                    .as_ref()
193                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
194                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
195                if project_name.is_empty() {
196                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
197                        "project_name",
198                        "cannot be empty or unset",
199                    ));
200                }
201                ::std::write!(
202                    output,
203                    "/v1/spaces/{spaceName}/projects/{projectName}/workflows",
204                    spaceName = space_name,
205                    projectName = project_name
206                )
207                .expect("formatting should succeed");
208                ::std::result::Result::Ok(())
209            }
210            fn uri_query(
211                _input: &crate::operation::list_workflows::ListWorkflowsInput,
212                mut output: &mut ::std::string::String,
213            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
214                let mut query = ::aws_smithy_http::query::Writer::new(output);
215                if let ::std::option::Option::Some(inner_3) = &_input.next_token {
216                    {
217                        query.push_kv("nextToken", &::aws_smithy_http::query::fmt_string(inner_3));
218                    }
219                }
220                if let ::std::option::Option::Some(inner_4) = &_input.max_results {
221                    {
222                        query.push_kv("maxResults", ::aws_smithy_types::primitive::Encoder::from(*inner_4).encode());
223                    }
224                }
225                ::std::result::Result::Ok(())
226            }
227            #[allow(clippy::unnecessary_wraps)]
228            fn update_http_builder(
229                input: &crate::operation::list_workflows::ListWorkflowsInput,
230                builder: ::http::request::Builder,
231            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
232                let mut uri = ::std::string::String::new();
233                uri_base(input, &mut uri)?;
234                uri_query(input, &mut uri)?;
235                ::std::result::Result::Ok(builder.method("POST").uri(uri))
236            }
237            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
238            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
239            builder
240        };
241        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_list_workflows::ser_list_workflows_input(&input)?);
242        if let Some(content_length) = body.content_length() {
243            let content_length = content_length.to_string();
244            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
245        }
246        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
247    }
248}
249#[derive(Debug)]
250struct ListWorkflowsEndpointParamsInterceptor;
251
252impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListWorkflowsEndpointParamsInterceptor {
253    fn name(&self) -> &'static str {
254        "ListWorkflowsEndpointParamsInterceptor"
255    }
256
257    fn read_before_execution(
258        &self,
259        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
260            '_,
261            ::aws_smithy_runtime_api::client::interceptors::context::Input,
262            ::aws_smithy_runtime_api::client::interceptors::context::Output,
263            ::aws_smithy_runtime_api::client::interceptors::context::Error,
264        >,
265        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
266    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
267        let _input = context
268            .input()
269            .downcast_ref::<ListWorkflowsInput>()
270            .ok_or("failed to downcast to ListWorkflowsInput")?;
271
272        let params = crate::config::endpoint::Params::builder()
273            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
274            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
275            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
276            .build()
277            .map_err(|err| {
278                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
279            })?;
280        cfg.interceptor_state()
281            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
282        ::std::result::Result::Ok(())
283    }
284}
285
286// The get_* functions below are generated from JMESPath expressions in the
287// operationContextParams trait. They target the operation's input shape.
288
289/// Error type for the `ListWorkflowsError` operation.
290#[non_exhaustive]
291#[derive(::std::fmt::Debug)]
292pub enum ListWorkflowsError {
293    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
294    AccessDeniedException(crate::types::error::AccessDeniedException),
295    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
296    ConflictException(crate::types::error::ConflictException),
297    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
298    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
299    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
300    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
301    /// <p>The request was denied due to request throttling.</p>
302    ThrottlingException(crate::types::error::ThrottlingException),
303    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
304    ValidationException(crate::types::error::ValidationException),
305    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
306    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
307    variable wildcard pattern and check `.code()`:
308     \
309    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
310     \
311    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListWorkflowsError) for what information is available for the error.")]
312    Unhandled(crate::error::sealed_unhandled::Unhandled),
313}
314impl ListWorkflowsError {
315    /// Creates the `ListWorkflowsError::Unhandled` variant from any error type.
316    pub fn unhandled(
317        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
318    ) -> Self {
319        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
320            source: err.into(),
321            meta: ::std::default::Default::default(),
322        })
323    }
324
325    /// Creates the `ListWorkflowsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
326    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
327        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
328            source: err.clone().into(),
329            meta: err,
330        })
331    }
332    ///
333    /// Returns error metadata, which includes the error code, message,
334    /// request ID, and potentially additional information.
335    ///
336    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
337        match self {
338            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
344            Self::Unhandled(e) => &e.meta,
345        }
346    }
347    /// Returns `true` if the error kind is `ListWorkflowsError::AccessDeniedException`.
348    pub fn is_access_denied_exception(&self) -> bool {
349        matches!(self, Self::AccessDeniedException(_))
350    }
351    /// Returns `true` if the error kind is `ListWorkflowsError::ConflictException`.
352    pub fn is_conflict_exception(&self) -> bool {
353        matches!(self, Self::ConflictException(_))
354    }
355    /// Returns `true` if the error kind is `ListWorkflowsError::ResourceNotFoundException`.
356    pub fn is_resource_not_found_exception(&self) -> bool {
357        matches!(self, Self::ResourceNotFoundException(_))
358    }
359    /// Returns `true` if the error kind is `ListWorkflowsError::ServiceQuotaExceededException`.
360    pub fn is_service_quota_exceeded_exception(&self) -> bool {
361        matches!(self, Self::ServiceQuotaExceededException(_))
362    }
363    /// Returns `true` if the error kind is `ListWorkflowsError::ThrottlingException`.
364    pub fn is_throttling_exception(&self) -> bool {
365        matches!(self, Self::ThrottlingException(_))
366    }
367    /// Returns `true` if the error kind is `ListWorkflowsError::ValidationException`.
368    pub fn is_validation_exception(&self) -> bool {
369        matches!(self, Self::ValidationException(_))
370    }
371}
372impl ::std::error::Error for ListWorkflowsError {
373    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
374        match self {
375            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
376            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
377            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
378            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
379            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
380            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
381            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
382        }
383    }
384}
385impl ::std::fmt::Display for ListWorkflowsError {
386    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
387        match self {
388            Self::AccessDeniedException(_inner) => _inner.fmt(f),
389            Self::ConflictException(_inner) => _inner.fmt(f),
390            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
391            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
392            Self::ThrottlingException(_inner) => _inner.fmt(f),
393            Self::ValidationException(_inner) => _inner.fmt(f),
394            Self::Unhandled(_inner) => {
395                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
396                    write!(f, "unhandled error ({code})")
397                } else {
398                    f.write_str("unhandled error")
399                }
400            }
401        }
402    }
403}
404impl ::aws_smithy_types::retry::ProvideErrorKind for ListWorkflowsError {
405    fn code(&self) -> ::std::option::Option<&str> {
406        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
407    }
408    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
409        match self {
410            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
411            _ => ::std::option::Option::None,
412        }
413    }
414}
415impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListWorkflowsError {
416    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
417        match self {
418            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
419            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
420            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
421            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
422            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::Unhandled(_inner) => &_inner.meta,
425        }
426    }
427}
428impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListWorkflowsError {
429    fn create_unhandled_error(
430        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
431        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
432    ) -> Self {
433        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
434            source,
435            meta: meta.unwrap_or_default(),
436        })
437    }
438}
439impl ::aws_types::request_id::RequestId for crate::operation::list_workflows::ListWorkflowsError {
440    fn request_id(&self) -> Option<&str> {
441        self.meta().request_id()
442    }
443}
444
445pub use crate::operation::list_workflows::_list_workflows_output::ListWorkflowsOutput;
446
447pub use crate::operation::list_workflows::_list_workflows_input::ListWorkflowsInput;
448
449mod _list_workflows_input;
450
451mod _list_workflows_output;
452
453/// Builders
454pub mod builders;
455
456/// Paginator for this operation
457pub mod paginator;