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            fn uri_base(
174                _input: &crate::operation::list_workflows::ListWorkflowsInput,
175                output: &mut ::std::string::String,
176            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
177                use ::std::fmt::Write as _;
178                let input_1 = &_input.space_name;
179                let input_1 = input_1
180                    .as_ref()
181                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
182                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
183                if space_name.is_empty() {
184                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
185                        "space_name",
186                        "cannot be empty or unset",
187                    ));
188                }
189                let input_2 = &_input.project_name;
190                let input_2 = input_2
191                    .as_ref()
192                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
193                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
194                if project_name.is_empty() {
195                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
196                        "project_name",
197                        "cannot be empty or unset",
198                    ));
199                }
200                ::std::write!(
201                    output,
202                    "/v1/spaces/{spaceName}/projects/{projectName}/workflows",
203                    spaceName = space_name,
204                    projectName = project_name
205                )
206                .expect("formatting should succeed");
207                ::std::result::Result::Ok(())
208            }
209            fn uri_query(
210                _input: &crate::operation::list_workflows::ListWorkflowsInput,
211                mut output: &mut ::std::string::String,
212            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
213                let mut query = ::aws_smithy_http::query::Writer::new(output);
214                if let ::std::option::Option::Some(inner_3) = &_input.next_token {
215                    {
216                        query.push_kv("nextToken", &::aws_smithy_http::query::fmt_string(inner_3));
217                    }
218                }
219                if let ::std::option::Option::Some(inner_4) = &_input.max_results {
220                    {
221                        query.push_kv("maxResults", ::aws_smithy_types::primitive::Encoder::from(*inner_4).encode());
222                    }
223                }
224                ::std::result::Result::Ok(())
225            }
226            #[allow(clippy::unnecessary_wraps)]
227            fn update_http_builder(
228                input: &crate::operation::list_workflows::ListWorkflowsInput,
229                builder: ::http::request::Builder,
230            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
231                let mut uri = ::std::string::String::new();
232                uri_base(input, &mut uri)?;
233                uri_query(input, &mut uri)?;
234                ::std::result::Result::Ok(builder.method("POST").uri(uri))
235            }
236            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
237            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
238            builder
239        };
240        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_list_workflows::ser_list_workflows_input(&input)?);
241        if let Some(content_length) = body.content_length() {
242            let content_length = content_length.to_string();
243            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
244        }
245        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
246    }
247}
248#[derive(Debug)]
249struct ListWorkflowsEndpointParamsInterceptor;
250
251impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListWorkflowsEndpointParamsInterceptor {
252    fn name(&self) -> &'static str {
253        "ListWorkflowsEndpointParamsInterceptor"
254    }
255
256    fn read_before_execution(
257        &self,
258        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
259            '_,
260            ::aws_smithy_runtime_api::client::interceptors::context::Input,
261            ::aws_smithy_runtime_api::client::interceptors::context::Output,
262            ::aws_smithy_runtime_api::client::interceptors::context::Error,
263        >,
264        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
265    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
266        let _input = context
267            .input()
268            .downcast_ref::<ListWorkflowsInput>()
269            .ok_or("failed to downcast to ListWorkflowsInput")?;
270
271        let params = crate::config::endpoint::Params::builder()
272            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
273            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
274            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
275            .build()
276            .map_err(|err| {
277                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
278            })?;
279        cfg.interceptor_state()
280            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
281        ::std::result::Result::Ok(())
282    }
283}
284
285// The get_* functions below are generated from JMESPath expressions in the
286// operationContextParams trait. They target the operation's input shape.
287
288/// Error type for the `ListWorkflowsError` operation.
289#[non_exhaustive]
290#[derive(::std::fmt::Debug)]
291pub enum ListWorkflowsError {
292    /// <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>
293    AccessDeniedException(crate::types::error::AccessDeniedException),
294    /// <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>
295    ConflictException(crate::types::error::ConflictException),
296    /// <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>
297    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
298    /// <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>
299    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
300    /// <p>The request was denied due to request throttling.</p>
301    ThrottlingException(crate::types::error::ThrottlingException),
302    /// <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>
303    ValidationException(crate::types::error::ValidationException),
304    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
305    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
306    variable wildcard pattern and check `.code()`:
307     \
308    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
309     \
310    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListWorkflowsError) for what information is available for the error.")]
311    Unhandled(crate::error::sealed_unhandled::Unhandled),
312}
313impl ListWorkflowsError {
314    /// Creates the `ListWorkflowsError::Unhandled` variant from any error type.
315    pub fn unhandled(
316        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
317    ) -> Self {
318        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
319            source: err.into(),
320            meta: ::std::default::Default::default(),
321        })
322    }
323
324    /// Creates the `ListWorkflowsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
325    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
326        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
327            source: err.clone().into(),
328            meta: err,
329        })
330    }
331    ///
332    /// Returns error metadata, which includes the error code, message,
333    /// request ID, and potentially additional information.
334    ///
335    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
336        match self {
337            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::Unhandled(e) => &e.meta,
344        }
345    }
346    /// Returns `true` if the error kind is `ListWorkflowsError::AccessDeniedException`.
347    pub fn is_access_denied_exception(&self) -> bool {
348        matches!(self, Self::AccessDeniedException(_))
349    }
350    /// Returns `true` if the error kind is `ListWorkflowsError::ConflictException`.
351    pub fn is_conflict_exception(&self) -> bool {
352        matches!(self, Self::ConflictException(_))
353    }
354    /// Returns `true` if the error kind is `ListWorkflowsError::ResourceNotFoundException`.
355    pub fn is_resource_not_found_exception(&self) -> bool {
356        matches!(self, Self::ResourceNotFoundException(_))
357    }
358    /// Returns `true` if the error kind is `ListWorkflowsError::ServiceQuotaExceededException`.
359    pub fn is_service_quota_exceeded_exception(&self) -> bool {
360        matches!(self, Self::ServiceQuotaExceededException(_))
361    }
362    /// Returns `true` if the error kind is `ListWorkflowsError::ThrottlingException`.
363    pub fn is_throttling_exception(&self) -> bool {
364        matches!(self, Self::ThrottlingException(_))
365    }
366    /// Returns `true` if the error kind is `ListWorkflowsError::ValidationException`.
367    pub fn is_validation_exception(&self) -> bool {
368        matches!(self, Self::ValidationException(_))
369    }
370}
371impl ::std::error::Error for ListWorkflowsError {
372    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
373        match self {
374            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
375            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
376            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
377            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
378            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
379            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
380            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
381        }
382    }
383}
384impl ::std::fmt::Display for ListWorkflowsError {
385    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
386        match self {
387            Self::AccessDeniedException(_inner) => _inner.fmt(f),
388            Self::ConflictException(_inner) => _inner.fmt(f),
389            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
390            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
391            Self::ThrottlingException(_inner) => _inner.fmt(f),
392            Self::ValidationException(_inner) => _inner.fmt(f),
393            Self::Unhandled(_inner) => {
394                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
395                    write!(f, "unhandled error ({code})")
396                } else {
397                    f.write_str("unhandled error")
398                }
399            }
400        }
401    }
402}
403impl ::aws_smithy_types::retry::ProvideErrorKind for ListWorkflowsError {
404    fn code(&self) -> ::std::option::Option<&str> {
405        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
406    }
407    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
408        match self {
409            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
410            _ => ::std::option::Option::None,
411        }
412    }
413}
414impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListWorkflowsError {
415    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
416        match self {
417            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
418            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
419            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
420            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
421            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
422            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::Unhandled(_inner) => &_inner.meta,
424        }
425    }
426}
427impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListWorkflowsError {
428    fn create_unhandled_error(
429        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
430        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
431    ) -> Self {
432        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
433            source,
434            meta: meta.unwrap_or_default(),
435        })
436    }
437}
438impl ::aws_types::request_id::RequestId for crate::operation::list_workflows::ListWorkflowsError {
439    fn request_id(&self) -> Option<&str> {
440        self.meta().request_id()
441    }
442}
443
444pub use crate::operation::list_workflows::_list_workflows_output::ListWorkflowsOutput;
445
446pub use crate::operation::list_workflows::_list_workflows_input::ListWorkflowsInput;
447
448mod _list_workflows_input;
449
450mod _list_workflows_output;
451
452/// Builders
453pub mod builders;
454
455/// Paginator for this operation
456pub mod paginator;