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    /// The schema for this operation's input shape.
12                    pub const INPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::get_session_token::GetSessionTokenInput::SCHEMA;
13                    /// The schema for this operation's output shape.
14                    pub const OUTPUT_SCHEMA: &'static ::aws_smithy_schema::Schema = crate::operation::get_session_token::GetSessionTokenOutput::SCHEMA;
15    pub(crate) async fn orchestrate(
16                        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
17                        input: crate::operation::get_session_token::GetSessionTokenInput,
18                    ) -> ::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>> {
19                        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>| {
20                            err.map_service_error(|err| {
21                                err.downcast::<crate::operation::get_session_token::GetSessionTokenError>().expect("correct error type")
22                            })
23                        };
24                        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
25                            .await
26                            .map_err(map_err)?;
27                        let output = context.finalize().map_err(map_err)?;
28                        ::std::result::Result::Ok(output.downcast::<crate::operation::get_session_token::GetSessionTokenOutput>().expect("correct output type"))
29                    }
30    
31                    pub(crate) async fn orchestrate_with_stop_point(
32                        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
33                        input: crate::operation::get_session_token::GetSessionTokenInput,
34                        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
35                    ) -> ::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>> {
36                        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
37                        use ::tracing::Instrument;
38                        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
39                            "STS",
40                            "GetSessionToken",
41                            input,
42                            runtime_plugins,
43                            stop_point
44                        )
45                        // Create a parent span for the entire operation. Includes a random, internal-only,
46                        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
47                        .instrument(::tracing::debug_span!(
48                                "STS.GetSessionToken",
49                                "rpc.service" = "STS",
50                                "rpc.method" = "GetSessionToken",
51                                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
52                                "rpc.system" = "aws-api",
53                            ))
54                        .await
55                    }
56    
57                    pub(crate) fn operation_runtime_plugins(
58                        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
59                        client_config: &crate::config::Config,
60                        config_override: ::std::option::Option<crate::config::Builder>,
61                    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
62                        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
63                        
64                        if let ::std::option::Option::Some(config_override) = config_override {
65                            for plugin in config_override.runtime_plugins.iter().cloned() {
66                                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
67                            }
68                            runtime_plugins = runtime_plugins.with_operation_plugin(
69                                crate::config::ConfigOverrideRuntimePlugin::new(config_override, client_config.config.clone(), &client_config.runtime_components)
70                            );
71                        }
72                        runtime_plugins
73                    }
74}
75impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for GetSessionToken {
76                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
77                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("GetSessionToken");
78
79                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(GetSessionTokenRequestSerializer));
80                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(GetSessionTokenResponseDeserializer));
81
82                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
83                        crate::config::auth::Params::builder()
84                            .operation_name("GetSessionToken")
85                            .build()
86                            .expect("required fields set")
87                    ));
88
89                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
90cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
91                            "GetSessionToken",
92                            "STS",
93                        ));
94let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
95                            signing_options.double_uri_encode = true;
96                            signing_options.content_sha256_header = false;
97                            signing_options.normalize_uri_path = true;
98                            signing_options.payload_override = None;
99
100                            cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
101                                signing_options,
102                                ..::std::default::Default::default()
103                            });
104
105                    ::std::option::Option::Some(cfg.freeze())
106                }
107
108                fn runtime_components(&self, _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
109                    #[allow(unused_mut)]
110                    let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("GetSessionToken")
111                            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
112.with_interceptor(GetSessionTokenEndpointParamsInterceptor)
113                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new())
114.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new())
115.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::get_session_token::GetSessionTokenError>::new());
116
117                    ::std::borrow::Cow::Owned(rcb)
118                }
119            }
120
121            
122#[derive(Debug)]
123            struct GetSessionTokenResponseDeserializer;
124            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetSessionTokenResponseDeserializer {
125                
126
127                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 {
128                    let (success, status) = (response.status().is_success(), response.status().as_u16());
129            let headers = response.headers();
130            let body = response.body().bytes().expect("body loaded");
131            #[allow(unused_mut)]
132            let mut force_error = false;
133            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
134            let parse_result = if !success && status != 200 || force_error {
135                crate::protocol_serde::shape_get_session_token::de_get_session_token_http_error(status, headers, body)
136            } else {
137                crate::protocol_serde::shape_get_session_token::de_get_session_token_http_response(status, headers, body)
138            };
139            crate::protocol_serde::type_erase_result(parse_result)
140                }
141            }
142#[derive(Debug)]
143            struct GetSessionTokenRequestSerializer;
144            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetSessionTokenRequestSerializer {
145                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
146                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> {
147                    let input = input.downcast::<crate::operation::get_session_token::GetSessionTokenInput>().expect("correct type");
148                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
149                    let mut request_builder = {
150                        #[allow(clippy::uninlined_format_args)]
151fn uri_base(_input: &crate::operation::get_session_token::GetSessionTokenInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
152    use ::std::fmt::Write as _;
153    ::std::write!(output, "/").expect("formatting should succeed");
154    ::std::result::Result::Ok(())
155}
156#[allow(clippy::unnecessary_wraps)]
157fn update_http_builder(
158                input: &crate::operation::get_session_token::GetSessionTokenInput,
159                builder: ::http_1x::request::Builder
160            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
161    let mut uri = ::std::string::String::new();
162    uri_base(input, &mut uri)?;
163    ::std::result::Result::Ok(builder.method("POST").uri(uri))
164}
165let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
166builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
167builder
168                    };
169                    let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_get_session_token_input::ser_get_session_token_input_input_input(&input)?);
170                    if let Some(content_length) = body.content_length() {
171                                let content_length = content_length.to_string();
172                                request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
173                            }
174                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
175                }
176            }
177#[derive(Debug)]
178            struct GetSessionTokenEndpointParamsInterceptor;
179
180            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetSessionTokenEndpointParamsInterceptor {
181                fn name(&self) -> &'static str {
182                    "GetSessionTokenEndpointParamsInterceptor"
183                }
184
185                fn read_before_execution(
186                    &self,
187                    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>,
188                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
189                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
190                    let _input = context.input()
191                        .downcast_ref::<GetSessionTokenInput>()
192                        .ok_or("failed to downcast to GetSessionTokenInput")?;
193
194                    
195
196                    let params = crate::config::endpoint::Params::builder()
197                        .set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
198.set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
199.set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
200.set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
201                        .build()
202                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
203                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
204                    ::std::result::Result::Ok(())
205                }
206            }
207
208            // The get_* functions below are generated from JMESPath expressions in the
209            // operationContextParams trait. They target the operation's input shape.
210
211            
212
213/// Error type for the `GetSessionTokenError` operation.
214#[non_exhaustive]
215#[derive(::std::fmt::Debug)]
216pub enum GetSessionTokenError {
217    /// <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 STS in an Amazon Web Services Region</a> in the <i>IAM User Guide</i>.</p>
218    RegionDisabledException(crate::types::error::RegionDisabledException),
219    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
220                    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
221    variable wildcard pattern and check `.code()`:
222     \
223    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
224     \
225    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-GetSessionTokenError) for what information is available for the error.")]
226                    Unhandled(crate::error::sealed_unhandled::Unhandled),
227}
228impl GetSessionTokenError {
229    /// Creates the `GetSessionTokenError::Unhandled` variant from any error type.
230                    pub fn unhandled(err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>) -> Self {
231                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.into(), meta: ::std::default::Default::default() })
232                    }
233    
234                    /// Creates the `GetSessionTokenError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
235                    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
236                        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source: err.clone().into(), meta: err })
237                    }
238    /// 
239    /// Returns error metadata, which includes the error code, message,
240    /// request ID, and potentially additional information.
241    /// 
242    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
243        match self {
244            Self::RegionDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
245            Self::Unhandled(e) => &e.meta,
246        }
247    }
248    /// Returns `true` if the error kind is `GetSessionTokenError::RegionDisabledException`.
249    pub fn is_region_disabled_exception(&self) -> bool {
250        matches!(self, Self::RegionDisabledException(_))
251    }
252}
253impl ::std::error::Error for GetSessionTokenError {
254    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
255        match self {
256            Self::RegionDisabledException(_inner) =>
257            ::std::option::Option::Some(_inner)
258            ,
259            Self::Unhandled(_inner) => {
260                ::std::option::Option::Some(&*_inner.source)
261            }
262        }
263    }
264}
265impl ::std::fmt::Display for GetSessionTokenError {
266    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
267        match self {
268            Self::RegionDisabledException(_inner) =>
269            _inner.fmt(f)
270            ,
271            Self::Unhandled(_inner) => {
272                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
273                                                        write!(f, "unhandled error ({code})")
274                                                    } else {
275                                                        f.write_str("unhandled error")
276                                                    }
277            }
278        }
279    }
280}
281impl ::aws_smithy_types::retry::ProvideErrorKind for GetSessionTokenError {
282    fn code(&self) -> ::std::option::Option<&str> {
283        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
284    }
285    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
286        ::std::option::Option::None
287    }
288}
289impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for GetSessionTokenError {
290    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
291        match self {
292            Self::RegionDisabledException(_inner) =>
293            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
294            ,
295            Self::Unhandled(_inner) => {
296                &_inner.meta
297            }
298        }
299    }
300}
301impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for GetSessionTokenError {
302    fn create_unhandled_error(
303                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
304                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
305                    ) -> Self {
306        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
307    }
308}
309impl ::aws_types::request_id::RequestId for crate::operation::get_session_token::GetSessionTokenError {
310                                fn request_id(&self) -> Option<&str> {
311                                    self.meta().request_id()
312                                }
313                            }
314
315pub use crate::operation::get_session_token::_get_session_token_input::GetSessionTokenInput;
316
317pub use crate::operation::get_session_token::_get_session_token_output::GetSessionTokenOutput;
318
319mod _get_session_token_input;
320
321mod _get_session_token_output;
322
323/// Builders
324pub mod builders;
325