aws_sdk_sts/operation/
get_session_token.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `GetSessionToken`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct GetSessionToken;
6impl GetSessionToken {
7    /// Creates a new `GetSessionToken`
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::get_session_token::GetSessionTokenInput,
14                    ) -> ::std::result::Result<crate::operation::get_session_token::GetSessionTokenOutput, ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::get_session_token::GetSessionTokenError, ::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::get_session_token::GetSessionTokenError>().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::get_session_token::GetSessionTokenOutput>().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::get_session_token::GetSessionTokenInput,
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                            "STS",
36                            "GetSessionToken",
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                                "STS.GetSessionToken",
45                                "rpc.service" = "STS",
46                                "rpc.method" = "GetSessionToken",
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                        runtime_plugins = runtime_plugins
60                                        .with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![::aws_runtime::auth::sigv4::SCHEME_ID]));
61                        if let ::std::option::Option::Some(config_override) = config_override {
62                            for plugin in config_override.runtime_plugins.iter().cloned() {
63                                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
64                            }
65                            runtime_plugins = runtime_plugins.with_operation_plugin(
66                                crate::config::ConfigOverrideRuntimePlugin::new(config_override, client_config.config.clone(), &client_config.runtime_components)
67                            );
68                        }
69                        runtime_plugins
70                    }
71}
72impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for GetSessionToken {
73                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
74                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("GetSessionToken");
75
76                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(GetSessionTokenRequestSerializer));
77                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(GetSessionTokenResponseDeserializer));
78
79                    
80                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new()));
81
82                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
83cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
84                            "GetSessionToken",
85                            "STS",
86                        ));
87let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
88                            signing_options.double_uri_encode = true;
89                            signing_options.content_sha256_header = false;
90                            signing_options.normalize_uri_path = true;
91                            signing_options.payload_override = None;
92
93                            cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
94                                signing_options,
95                                ..::std::default::Default::default()
96                            });
97
98                    ::std::option::Option::Some(cfg.freeze())
99                }
100
101                fn runtime_components(&self, _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
102                    #[allow(unused_mut)]
103                    let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("GetSessionToken")
104                            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
105.with_interceptor(GetSessionTokenEndpointParamsInterceptor)
106                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new())
107.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new())
108.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new());
109
110                    ::std::borrow::Cow::Owned(rcb)
111                }
112            }
113
114            
115#[derive(Debug)]
116            struct GetSessionTokenResponseDeserializer;
117            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetSessionTokenResponseDeserializer {
118                
119
120                fn deserialize_nonstreaming(&self, response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
121                    let (success, status) = (response.status().is_success(), response.status().as_u16());
122            let headers = response.headers();
123            let body = response.body().bytes().expect("body loaded");
124            #[allow(unused_mut)]
125            let mut force_error = false;
126            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
127            let parse_result = if !success && status != 200 || force_error {
128                crate::protocol_serde::shape_get_session_token::de_get_session_token_http_error(status, headers, body)
129            } else {
130                crate::protocol_serde::shape_get_session_token::de_get_session_token_http_response(status, headers, body)
131            };
132            crate::protocol_serde::type_erase_result(parse_result)
133                }
134            }
135#[derive(Debug)]
136            struct GetSessionTokenRequestSerializer;
137            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetSessionTokenRequestSerializer {
138                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
139                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> {
140                    let input = input.downcast::<crate::operation::get_session_token::GetSessionTokenInput>().expect("correct type");
141                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
142                    let mut request_builder = {
143                        fn uri_base(_input: &crate::operation::get_session_token::GetSessionTokenInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
144    use ::std::fmt::Write as _;
145    ::std::write!(output, "/").expect("formatting should succeed");
146    ::std::result::Result::Ok(())
147}
148#[allow(clippy::unnecessary_wraps)]
149fn update_http_builder(
150                input: &crate::operation::get_session_token::GetSessionTokenInput,
151                builder: ::http::request::Builder
152            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
153    let mut uri = ::std::string::String::new();
154    uri_base(input, &mut uri)?;
155    ::std::result::Result::Ok(builder.method("POST").uri(uri))
156}
157let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
158builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
159builder
160                    };
161                    let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_get_session_token_input::ser_get_session_token_input_input_input(&input)?);
162                    if let Some(content_length) = body.content_length() {
163                                let content_length = content_length.to_string();
164                                request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
165                            }
166                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
167                }
168            }
169#[derive(Debug)]
170            struct GetSessionTokenEndpointParamsInterceptor;
171
172            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetSessionTokenEndpointParamsInterceptor {
173                fn name(&self) -> &'static str {
174                    "GetSessionTokenEndpointParamsInterceptor"
175                }
176
177                fn read_before_execution(
178                    &self,
179                    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>,
180                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
181                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
182                    let _input = context.input()
183                        .downcast_ref::<GetSessionTokenInput>()
184                        .ok_or("failed to downcast to GetSessionTokenInput")?;
185
186                    
187
188                    let params = crate::config::endpoint::Params::builder()
189                        .set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
190.set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
191.set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
192.set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
193                        .build()
194                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
195                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
196                    ::std::result::Result::Ok(())
197                }
198            }
199
200            // The get_* functions below are generated from JMESPath expressions in the
201            // operationContextParams trait. They target the operation's input shape.
202
203            
204
205/// Error type for the `GetSessionTokenError` operation.
206#[non_exhaustive]
207#[derive(::std::fmt::Debug)]
208pub enum GetSessionTokenError {
209    /// <p>STS is not activated in the requested region for the account that is being asked to generate credentials. The account administrator must use the IAM console to activate STS in that region. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html">Activating and Deactivating Amazon Web Services STS in an Amazon Web Services Region</a> in the <i>IAM User Guide</i>.</p>
210    RegionDisabledException(crate::types::error::RegionDisabledException),
211    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
212                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
213    variable wildcard pattern and check `.code()`:
214     \
215    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
216     \
217    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-GetSessionTokenError) for what information is available for the error.")]
218                    Unhandled(crate::error::sealed_unhandled::Unhandled),
219}
220impl GetSessionTokenError {
221    /// Creates the `GetSessionTokenError::Unhandled` variant from any error type.
222                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
223                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
224                    }
225    
226                    /// Creates the `GetSessionTokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
227                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
228                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
229                    }
230    /// 
231    /// Returns error metadata, which includes the error code, message,
232    /// request ID, and potentially additional information.
233    /// 
234    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
235        match self {
236            Self::RegionDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
237            Self::Unhandled(e) => &e.meta,
238        }
239    }
240    /// Returns `true` if the error kind is `GetSessionTokenError::RegionDisabledException`.
241    pub fn is_region_disabled_exception(&self) -> bool {
242        matches!(self, Self::RegionDisabledException(_))
243    }
244}
245impl ::std::error::Error for GetSessionTokenError {
246    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
247        match self {
248            Self::RegionDisabledException(_inner) =>
249            ::std::option::Option::Some(_inner)
250            ,
251            Self::Unhandled(_inner) => {
252                ::std::option::Option::Some(&*_inner.source)
253            }
254        }
255    }
256}
257impl ::std::fmt::Display for GetSessionTokenError {
258    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
259        match self {
260            Self::RegionDisabledException(_inner) =>
261            _inner.fmt(f)
262            ,
263            Self::Unhandled(_inner) => {
264                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
265                                                        write!(f, "unhandled error ({code})")
266                                                    } else {
267                                                        f.write_str("unhandled error")
268                                                    }
269            }
270        }
271    }
272}
273impl ::aws_smithy_types::retry::ProvideErrorKind for GetSessionTokenError {
274    fn code(&self) -> ::std::option::Option<&str> {
275        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
276    }
277    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
278        ::std::option::Option::None
279    }
280}
281impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for GetSessionTokenError {
282    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
283        match self {
284            Self::RegionDisabledException(_inner) =>
285            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
286            ,
287            Self::Unhandled(_inner) => {
288                &_inner.meta
289            }
290        }
291    }
292}
293impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for GetSessionTokenError {
294    fn create_unhandled_error(
295                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
296                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
297                    ) -> Self {
298        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
299    }
300}
301impl ::aws_types::request_id::RequestId for crate::operation::get_session_token::GetSessionTokenError {
302                                fn request_id(&self) -> Option<&str> {
303                                    self.meta().request_id()
304                                }
305                            }
306
307pub use crate::operation::get_session_token::_get_session_token_output::GetSessionTokenOutput;
308
309pub use crate::operation::get_session_token::_get_session_token_input::GetSessionTokenInput;
310
311mod _get_session_token_input;
312
313mod _get_session_token_output;
314
315/// Builders
316pub mod builders;
317