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
103                    ::std::borrow::Cow::Owned(rcb)
104                }
105            }
106
107
108#[derive(Debug)]
109            struct CreateOAuth2TokenResponseDeserializer;
110            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateOAuth2TokenResponseDeserializer {
111
112
113                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 {
114                    let (success, status) = (response.status().is_success(), response.status().as_u16());
115            let headers = response.headers();
116            let body = response.body().bytes().expect("body loaded");
117            #[allow(unused_mut)]
118            let mut force_error = false;
119            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
120            let parse_result = if !success && status != 200 || force_error {
121                crate::protocol_serde::shape_create_o_auth2_token::de_create_o_auth2_token_http_error(status, headers, body)
122            } else {
123                crate::protocol_serde::shape_create_o_auth2_token::de_create_o_auth2_token_http_response(status, headers, body)
124            };
125            crate::protocol_serde::type_erase_result(parse_result)
126                }
127            }
128#[derive(Debug)]
129            struct CreateOAuth2TokenRequestSerializer;
130            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateOAuth2TokenRequestSerializer {
131                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
132                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> {
133                    let input = input.downcast::<crate::operation::create_o_auth2_token::CreateOAuth2TokenInput>().expect("correct type");
134                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
135                    let mut request_builder = {
136                        #[allow(clippy::uninlined_format_args)]
137fn uri_base(_input: &crate::operation::create_o_auth2_token::CreateOAuth2TokenInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
138    use ::std::fmt::Write as _;
139    ::std::write!(output, "/v1/token").expect("formatting should succeed");
140    ::std::result::Result::Ok(())
141}
142#[allow(clippy::unnecessary_wraps)]
143fn update_http_builder(
144                input: &crate::operation::create_o_auth2_token::CreateOAuth2TokenInput,
145                builder: ::http_1x::request::Builder
146            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
147    let mut uri = ::std::string::String::new();
148    uri_base(input, &mut uri)?;
149    ::std::result::Result::Ok(builder.method("POST").uri(uri))
150}
151let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
152builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
153builder
154                    };
155                    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)?);
156                    if let Some(content_length) = body.content_length() {
157                                let content_length = content_length.to_string();
158                                request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
159                            }
160                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
161                }
162            }
163#[derive(Debug)]
164            struct CreateOAuth2TokenEndpointParamsInterceptor;
165
166            #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
167            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateOAuth2TokenEndpointParamsInterceptor {
168                fn name(&self) -> &'static str {
169                    "CreateOAuth2TokenEndpointParamsInterceptor"
170                }
171
172                fn read_before_execution(
173                    &self,
174                    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>,
175                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
176                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
177                    let _input = context.input()
178                        .downcast_ref::<CreateOAuth2TokenInput>()
179                        .ok_or("failed to downcast to CreateOAuth2TokenInput")?;
180
181
182
183                    let params = crate::config::endpoint::Params::builder()
184                        .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
185.set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
186.set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
187.set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
188.set_is_control_plane(Some(false))
189                        .build()
190                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
191                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
192                    ::std::result::Result::Ok(())
193                }
194            }
195
196            // The get_* functions below are generated from JMESPath expressions in the
197            // operationContextParams trait. They target the operation's input shape.
198
199
200
201/// Error type for the `CreateOAuth2TokenError` operation.
202#[non_exhaustive]
203#[derive(::std::fmt::Debug)]
204pub enum CreateOAuth2TokenError {
205    /// 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.
206    AccessDeniedException(crate::types::error::AccessDeniedException),
207    /// 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.
208    InternalServerException(crate::types::error::InternalServerException),
209    /// 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
210    TooManyRequestsError(crate::types::error::TooManyRequestsError),
211    /// 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.
212    ValidationException(crate::types::error::ValidationException),
213    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
214                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
215    variable wildcard pattern and check `.code()`:
216     \
217    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
218     \
219    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateOAuth2TokenError) for what information is available for the error.")]
220                    Unhandled(crate::error::sealed_unhandled::Unhandled),
221}
222impl CreateOAuth2TokenError {
223    /// Creates the `CreateOAuth2TokenError::Unhandled` variant from any error type.
224                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
225                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
226                    }
227
228                    /// Creates the `CreateOAuth2TokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
229                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
230                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
231                    }
232    ///
233    /// Returns error metadata, which includes the error code, message,
234    /// request ID, and potentially additional information.
235    ///
236    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
237        match self {
238            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
239            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
240            Self::TooManyRequestsError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
241            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
242            Self::Unhandled(e) => &e.meta,
243        }
244    }
245    /// Returns `true` if the error kind is `CreateOAuth2TokenError::AccessDeniedException`.
246    pub fn is_access_denied_exception(&self) -> bool {
247        matches!(self, Self::AccessDeniedException(_))
248    }
249    /// Returns `true` if the error kind is `CreateOAuth2TokenError::InternalServerException`.
250    pub fn is_internal_server_exception(&self) -> bool {
251        matches!(self, Self::InternalServerException(_))
252    }
253    /// Returns `true` if the error kind is `CreateOAuth2TokenError::TooManyRequestsError`.
254    pub fn is_too_many_requests_error(&self) -> bool {
255        matches!(self, Self::TooManyRequestsError(_))
256    }
257    /// Returns `true` if the error kind is `CreateOAuth2TokenError::ValidationException`.
258    pub fn is_validation_exception(&self) -> bool {
259        matches!(self, Self::ValidationException(_))
260    }
261}
262impl ::std::error::Error for CreateOAuth2TokenError {
263    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
264        match self {
265            Self::AccessDeniedException(_inner) =>
266            ::std::option::Option::Some(_inner)
267            ,
268            Self::InternalServerException(_inner) =>
269            ::std::option::Option::Some(_inner)
270            ,
271            Self::TooManyRequestsError(_inner) =>
272            ::std::option::Option::Some(_inner)
273            ,
274            Self::ValidationException(_inner) =>
275            ::std::option::Option::Some(_inner)
276            ,
277            Self::Unhandled(_inner) => {
278                ::std::option::Option::Some(&*_inner.source)
279            }
280        }
281    }
282}
283impl ::std::fmt::Display for CreateOAuth2TokenError {
284    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
285        match self {
286            Self::AccessDeniedException(_inner) =>
287            _inner.fmt(f)
288            ,
289            Self::InternalServerException(_inner) =>
290            _inner.fmt(f)
291            ,
292            Self::TooManyRequestsError(_inner) =>
293            _inner.fmt(f)
294            ,
295            Self::ValidationException(_inner) =>
296            _inner.fmt(f)
297            ,
298            Self::Unhandled(_inner) => {
299                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
300                                                        write!(f, "unhandled error ({code})")
301                                                    } else {
302                                                        f.write_str("unhandled error")
303                                                    }
304            }
305        }
306    }
307}
308impl ::aws_smithy_types::retry::ProvideErrorKind for CreateOAuth2TokenError {
309    fn code(&self) -> ::std::option::Option<&str> {
310        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
311    }
312    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
313        ::std::option::Option::None
314    }
315}
316impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateOAuth2TokenError {
317    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
318        match self {
319            Self::AccessDeniedException(_inner) =>
320            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
321            ,
322            Self::InternalServerException(_inner) =>
323            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
324            ,
325            Self::TooManyRequestsError(_inner) =>
326            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
327            ,
328            Self::ValidationException(_inner) =>
329            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
330            ,
331            Self::Unhandled(_inner) => {
332                &_inner.meta
333            }
334        }
335    }
336}
337impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateOAuth2TokenError {
338    fn create_unhandled_error(
339                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
340                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
341                    ) -> Self {
342        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
343    }
344}
345impl ::aws_types::request_id::RequestId for crate::operation::create_o_auth2_token::CreateOAuth2TokenError {
346                                fn request_id(&self) -> Option<&str> {
347                                    self.meta().request_id()
348                                }
349                            }
350
351pub use crate::operation::create_o_auth2_token::_create_o_auth2_token_input::CreateOAuth2TokenInput;
352
353pub use crate::operation::create_o_auth2_token::_create_o_auth2_token_output::CreateOAuth2TokenOutput;
354
355mod _create_o_auth2_token_input;
356
357mod _create_o_auth2_token_output;
358
359/// Builders
360pub mod builders;
361