Skip to main content

aws_sdk_signin/operation/
create_o_auth2_token.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateOAuth2Token`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateOAuth2Token;
6impl CreateOAuth2Token {
7    /// Creates a new `CreateOAuth2Token`
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::create_o_auth2_token::CreateOAuth2TokenInput,
14                    ) -> ::std::result::Result<crate::operation::create_o_auth2_token::CreateOAuth2TokenOutput, ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::create_o_auth2_token::CreateOAuth2TokenError, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>> {
15                        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<::aws_smithy_runtime_api::client::interceptors::context::Error, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>| {
16                            err.map_service_error(|err| {
17                                err.downcast::<crate::operation::create_o_auth2_token::CreateOAuth2TokenError>().expect("correct error type")
18                            })
19                        };
20                        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
21                            .await
22                            .map_err(map_err)?;
23                        let output = context.finalize().map_err(map_err)?;
24                        ::std::result::Result::Ok(output.downcast::<crate::operation::create_o_auth2_token::CreateOAuth2TokenOutput>().expect("correct output type"))
25                    }
26
27                    pub(crate) async fn orchestrate_with_stop_point(
28                        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
29                        input: crate::operation::create_o_auth2_token::CreateOAuth2TokenInput,
30                        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
31                    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext, ::aws_smithy_runtime_api::client::result::SdkError<::aws_smithy_runtime_api::client::interceptors::context::Error, ::aws_smithy_runtime_api::client::orchestrator::HttpResponse>> {
32                        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
33                        use ::tracing::Instrument;
34                        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
35                            "Signin",
36                            "CreateOAuth2Token",
37                            input,
38                            runtime_plugins,
39                            stop_point
40                        )
41                        // Create a parent span for the entire operation. Includes a random, internal-only,
42                        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
43                        .instrument(::tracing::debug_span!(
44                                "Signin.CreateOAuth2Token",
45                                "rpc.service" = "Signin",
46                                "rpc.method" = "CreateOAuth2Token",
47                                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
48                                "rpc.system" = "aws-api",
49                            ))
50                        .await
51                    }
52
53                    pub(crate) fn operation_runtime_plugins(
54                        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
55                        client_config: &crate::config::Config,
56                        config_override: ::std::option::Option<crate::config::Builder>,
57                    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
58                        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
59
60                        if let ::std::option::Option::Some(config_override) = config_override {
61                            for plugin in config_override.runtime_plugins.iter().cloned() {
62                                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
63                            }
64                            runtime_plugins = runtime_plugins.with_operation_plugin(
65                                crate::config::ConfigOverrideRuntimePlugin::new(config_override, client_config.config.clone(), &client_config.runtime_components)
66                            );
67                        }
68                        runtime_plugins
69                    }
70}
71impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateOAuth2Token {
72                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
73                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateOAuth2Token");
74
75                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(CreateOAuth2TokenRequestSerializer));
76                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(CreateOAuth2TokenResponseDeserializer));
77
78                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
79                        crate::config::auth::Params::builder()
80                            .operation_name("CreateOAuth2Token")
81                            .build()
82                            .expect("required fields set")
83                    ));
84
85                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
86cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
87                            "CreateOAuth2Token",
88                            "Signin",
89                        ));
90
91                    ::std::option::Option::Some(cfg.freeze())
92                }
93
94                fn runtime_components(&self, _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
95                    #[allow(unused_mut)]
96                    let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateOAuth2Token")
97                            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default()))
98.with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(CreateOAuth2TokenEndpointParamsInterceptor))
99                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::create_o_auth2_token::CreateOAuth2TokenError>::new())
100.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::create_o_auth2_token::CreateOAuth2TokenError>::new())
101.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::create_o_auth2_token::CreateOAuth2TokenError>::new())
102.with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<crate::operation::create_o_auth2_token::CreateOAuth2TokenError>::new());
103
104                    ::std::borrow::Cow::Owned(rcb)
105                }
106            }
107
108
109#[derive(Debug)]
110            struct CreateOAuth2TokenResponseDeserializer;
111            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateOAuth2TokenResponseDeserializer {
112
113
114                fn deserialize_nonstreaming_with_config(&self, response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse, _cfg: &::aws_smithy_types::config_bag::ConfigBag) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
115                    let (success, status) = (response.status().is_success(), response.status().as_u16());
116            let headers = response.headers();
117            let body = response.body().bytes().expect("body loaded");
118            #[allow(unused_mut)]
119            let mut force_error = false;
120            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
121            let parse_result = if !success && status != 200 || force_error {
122                crate::protocol_serde::shape_create_o_auth2_token::de_create_o_auth2_token_http_error(status, headers, body, _cfg)
123            } else {
124                crate::protocol_serde::shape_create_o_auth2_token::de_create_o_auth2_token_http_response(status, headers, body, _cfg)
125            };
126            crate::protocol_serde::type_erase_result(parse_result)
127                }
128            }
129#[derive(Debug)]
130            struct CreateOAuth2TokenRequestSerializer;
131            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateOAuth2TokenRequestSerializer {
132                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
133                fn serialize_input(&self, input: ::aws_smithy_runtime_api::client::interceptors::context::Input, _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
134                    let input = input.downcast::<crate::operation::create_o_auth2_token::CreateOAuth2TokenInput>().expect("correct type");
135                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
136                    let mut request_builder = {
137                        #[allow(clippy::uninlined_format_args)]
138fn uri_base(_input: &crate::operation::create_o_auth2_token::CreateOAuth2TokenInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
139    use ::std::fmt::Write as _;
140    ::std::write!(output, "/v1/token").expect("formatting should succeed");
141    ::std::result::Result::Ok(())
142}
143#[allow(clippy::unnecessary_wraps)]
144fn update_http_builder(
145                input: &crate::operation::create_o_auth2_token::CreateOAuth2TokenInput,
146                builder: ::http_1x::request::Builder
147            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
148    let mut uri = ::std::string::String::new();
149    uri_base(input, &mut uri)?;
150    ::std::result::Result::Ok(builder.method("POST").uri(uri))
151}
152let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
153builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
154builder
155                    };
156                    let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_o_auth2_token_input::ser_token_input_http_payload(& input.token_input)?);
157                    if let Some(content_length) = body.content_length() {
158                                let content_length = content_length.to_string();
159                                request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
160                            }
161                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
162                }
163            }
164#[derive(Debug)]
165            struct CreateOAuth2TokenEndpointParamsInterceptor;
166
167            #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
168            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateOAuth2TokenEndpointParamsInterceptor {
169                fn name(&self) -> &'static str {
170                    "CreateOAuth2TokenEndpointParamsInterceptor"
171                }
172
173                fn read_before_execution(
174                    &self,
175                    context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_, ::aws_smithy_runtime_api::client::interceptors::context::Input, ::aws_smithy_runtime_api::client::interceptors::context::Output, ::aws_smithy_runtime_api::client::interceptors::context::Error>,
176                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
177                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
178                    let _input = context.input()
179                        .downcast_ref::<CreateOAuth2TokenInput>()
180                        .ok_or("failed to downcast to CreateOAuth2TokenInput")?;
181
182
183
184                    let params = crate::config::endpoint::Params::builder()
185                        .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
186.set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
187.set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
188.set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
189.set_is_control_plane(Some(false))
190                        .build()
191                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
192                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
193                    ::std::result::Result::Ok(())
194                }
195            }
196
197            // The get_* functions below are generated from JMESPath expressions in the
198            // operationContextParams trait. They target the operation's input shape.
199
200
201
202/// Error type for the `CreateOAuth2TokenError` operation.
203#[non_exhaustive]
204#[derive(::std::fmt::Debug)]
205pub enum CreateOAuth2TokenError {
206    /// Error thrown for access denied scenarios with flexible HTTP status mapping Runtime HTTP Status Code Mapping: - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS The specific HTTP status code is determined at runtime based on the error enum value. Consumers should use the error field to determine the specific access denial reason.
207    AccessDeniedException(crate::types::error::AccessDeniedException),
208    /// Error thrown when an internal server error occurs HTTP Status Code: 500 Internal Server Error Used for unexpected server-side errors that prevent request processing.
209    InternalServerException(crate::types::error::InternalServerException),
210    /// Error thrown when rate limit is exceeded HTTP Status Code: 429 Too Many Requests Possible OAuth2ErrorCode values: - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention Possible causes: - Too many token requests from the same client - Rate limiting based on client_id or IP address - Abuse prevention mechanisms triggered - Service protection against excessive token generation
211    TooManyRequestsError(crate::types::error::TooManyRequestsError),
212    /// Error thrown when request validation fails HTTP Status Code: 400 Bad Request Used for request validation errors such as malformed parameters, missing required fields, or invalid parameter values.
213    ValidationException(crate::types::error::ValidationException),
214    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
215                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
216    variable wildcard pattern and check `.code()`:
217     \
218    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
219     \
220    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateOAuth2TokenError) for what information is available for the error.")]
221                    Unhandled(crate::error::sealed_unhandled::Unhandled),
222}
223impl CreateOAuth2TokenError {
224    /// Creates the `CreateOAuth2TokenError::Unhandled` variant from any error type.
225                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
226                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
227                    }
228
229                    /// Creates the `CreateOAuth2TokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
230                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
231                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
232                    }
233    ///
234    /// Returns error metadata, which includes the error code, message,
235    /// request ID, and potentially additional information.
236    ///
237    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
238        match self {
239            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
240            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
241            Self::TooManyRequestsError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
242            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
243            Self::Unhandled(e) => &e.meta,
244        }
245    }
246    /// Returns `true` if the error kind is `CreateOAuth2TokenError::AccessDeniedException`.
247    pub fn is_access_denied_exception(&self) -> bool {
248        matches!(self, Self::AccessDeniedException(_))
249    }
250    /// Returns `true` if the error kind is `CreateOAuth2TokenError::InternalServerException`.
251    pub fn is_internal_server_exception(&self) -> bool {
252        matches!(self, Self::InternalServerException(_))
253    }
254    /// Returns `true` if the error kind is `CreateOAuth2TokenError::TooManyRequestsError`.
255    pub fn is_too_many_requests_error(&self) -> bool {
256        matches!(self, Self::TooManyRequestsError(_))
257    }
258    /// Returns `true` if the error kind is `CreateOAuth2TokenError::ValidationException`.
259    pub fn is_validation_exception(&self) -> bool {
260        matches!(self, Self::ValidationException(_))
261    }
262}
263impl ::std::error::Error for CreateOAuth2TokenError {
264    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
265        match self {
266            Self::AccessDeniedException(_inner) =>
267            ::std::option::Option::Some(_inner)
268            ,
269            Self::InternalServerException(_inner) =>
270            ::std::option::Option::Some(_inner)
271            ,
272            Self::TooManyRequestsError(_inner) =>
273            ::std::option::Option::Some(_inner)
274            ,
275            Self::ValidationException(_inner) =>
276            ::std::option::Option::Some(_inner)
277            ,
278            Self::Unhandled(_inner) => {
279                ::std::option::Option::Some(&*_inner.source)
280            }
281        }
282    }
283}
284impl ::std::fmt::Display for CreateOAuth2TokenError {
285    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
286        match self {
287            Self::AccessDeniedException(_inner) =>
288            _inner.fmt(f)
289            ,
290            Self::InternalServerException(_inner) =>
291            _inner.fmt(f)
292            ,
293            Self::TooManyRequestsError(_inner) =>
294            _inner.fmt(f)
295            ,
296            Self::ValidationException(_inner) =>
297            _inner.fmt(f)
298            ,
299            Self::Unhandled(_inner) => {
300                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
301                                                        write!(f, "unhandled error ({code})")
302                                                    } else {
303                                                        f.write_str("unhandled error")
304                                                    }
305            }
306        }
307    }
308}
309impl ::aws_smithy_types::retry::ProvideErrorKind for CreateOAuth2TokenError {
310    fn code(&self) -> ::std::option::Option<&str> {
311        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
312    }
313    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
314        ::std::option::Option::None
315    }
316}
317impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateOAuth2TokenError {
318    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
319        match self {
320            Self::AccessDeniedException(_inner) =>
321            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
322            ,
323            Self::InternalServerException(_inner) =>
324            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
325            ,
326            Self::TooManyRequestsError(_inner) =>
327            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
328            ,
329            Self::ValidationException(_inner) =>
330            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
331            ,
332            Self::Unhandled(_inner) => {
333                &_inner.meta
334            }
335        }
336    }
337}
338impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateOAuth2TokenError {
339    fn create_unhandled_error(
340                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
341                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
342                    ) -> Self {
343        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
344    }
345}
346impl ::aws_types::request_id::RequestId for crate::operation::create_o_auth2_token::CreateOAuth2TokenError {
347                                fn request_id(&self) -> Option<&str> {
348                                    self.meta().request_id()
349                                }
350                            }
351
352pub use crate::operation::create_o_auth2_token::_create_o_auth2_token_input::CreateOAuth2TokenInput;
353
354pub use crate::operation::create_o_auth2_token::_create_o_auth2_token_output::CreateOAuth2TokenOutput;
355
356mod _create_o_auth2_token_input;
357
358mod _create_o_auth2_token_output;
359
360/// Builders
361pub mod builders;
362