aws_sdk_gamelift/operation/
describe_game_session_details.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DescribeGameSessionDetails`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DescribeGameSessionDetails;
6impl DescribeGameSessionDetails {
7    /// Creates a new `DescribeGameSessionDetails`
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::describe_game_session_details::DescribeGameSessionDetailsInput,
14    ) -> ::std::result::Result<
15        crate::operation::describe_game_session_details::DescribeGameSessionDetailsOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::describe_game_session_details::DescribeGameSessionDetailsError,
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::describe_game_session_details::DescribeGameSessionDetailsError>()
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::describe_game_session_details::DescribeGameSessionDetailsOutput>()
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::describe_game_session_details::DescribeGameSessionDetailsInput,
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(
55            "GameLift",
56            "DescribeGameSessionDetails",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "GameLift.DescribeGameSessionDetails",
65            "rpc.service" = "GameLift",
66            "rpc.method" = "DescribeGameSessionDetails",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DescribeGameSessionDetails {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DescribeGameSessionDetails");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            DescribeGameSessionDetailsRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            DescribeGameSessionDetailsResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("DescribeGameSessionDetails")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
112        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
113            "DescribeGameSessionDetails",
114            "GameLift",
115        ));
116        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
117        signing_options.double_uri_encode = true;
118        signing_options.content_sha256_header = false;
119        signing_options.normalize_uri_path = true;
120        signing_options.payload_override = None;
121
122        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
123            signing_options,
124            ..::std::default::Default::default()
125        });
126
127        ::std::option::Option::Some(cfg.freeze())
128    }
129
130    fn runtime_components(
131        &self,
132        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
133    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
134        #[allow(unused_mut)]
135        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DescribeGameSessionDetails")
136            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
137            .with_interceptor(DescribeGameSessionDetailsEndpointParamsInterceptor)
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::describe_game_session_details::DescribeGameSessionDetailsError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::describe_game_session_details::DescribeGameSessionDetailsError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::describe_game_session_details::DescribeGameSessionDetailsError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct DescribeGameSessionDetailsResponseDeserializer;
154impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DescribeGameSessionDetailsResponseDeserializer {
155    fn deserialize_nonstreaming(
156        &self,
157        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
158    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
159        let (success, status) = (response.status().is_success(), response.status().as_u16());
160        let headers = response.headers();
161        let body = response.body().bytes().expect("body loaded");
162        #[allow(unused_mut)]
163        let mut force_error = false;
164        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
165        let parse_result = if !success && status != 200 || force_error {
166            crate::protocol_serde::shape_describe_game_session_details::de_describe_game_session_details_http_error(status, headers, body)
167        } else {
168            crate::protocol_serde::shape_describe_game_session_details::de_describe_game_session_details_http_response(status, headers, body)
169        };
170        crate::protocol_serde::type_erase_result(parse_result)
171    }
172}
173#[derive(Debug)]
174struct DescribeGameSessionDetailsRequestSerializer;
175impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DescribeGameSessionDetailsRequestSerializer {
176    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
177    fn serialize_input(
178        &self,
179        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
180        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
181    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
182        let input = input
183            .downcast::<crate::operation::describe_game_session_details::DescribeGameSessionDetailsInput>()
184            .expect("correct type");
185        let _header_serialization_settings = _cfg
186            .load::<crate::serialization_settings::HeaderSerializationSettings>()
187            .cloned()
188            .unwrap_or_default();
189        let mut request_builder = {
190            #[allow(clippy::uninlined_format_args)]
191            fn uri_base(
192                _input: &crate::operation::describe_game_session_details::DescribeGameSessionDetailsInput,
193                output: &mut ::std::string::String,
194            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
195                use ::std::fmt::Write as _;
196                ::std::write!(output, "/").expect("formatting should succeed");
197                ::std::result::Result::Ok(())
198            }
199            #[allow(clippy::unnecessary_wraps)]
200            fn update_http_builder(
201                input: &crate::operation::describe_game_session_details::DescribeGameSessionDetailsInput,
202                builder: ::http::request::Builder,
203            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
204                let mut uri = ::std::string::String::new();
205                uri_base(input, &mut uri)?;
206                ::std::result::Result::Ok(builder.method("POST").uri(uri))
207            }
208            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
209            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
210            builder = _header_serialization_settings.set_default_header(
211                builder,
212                ::http::header::HeaderName::from_static("x-amz-target"),
213                "GameLift.DescribeGameSessionDetails",
214            );
215            builder
216        };
217        let body = ::aws_smithy_types::body::SdkBody::from(
218            crate::protocol_serde::shape_describe_game_session_details::ser_describe_game_session_details_input(&input)?,
219        );
220        if let Some(content_length) = body.content_length() {
221            let content_length = content_length.to_string();
222            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
223        }
224        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
225    }
226}
227#[derive(Debug)]
228struct DescribeGameSessionDetailsEndpointParamsInterceptor;
229
230impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DescribeGameSessionDetailsEndpointParamsInterceptor {
231    fn name(&self) -> &'static str {
232        "DescribeGameSessionDetailsEndpointParamsInterceptor"
233    }
234
235    fn read_before_execution(
236        &self,
237        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
238            '_,
239            ::aws_smithy_runtime_api::client::interceptors::context::Input,
240            ::aws_smithy_runtime_api::client::interceptors::context::Output,
241            ::aws_smithy_runtime_api::client::interceptors::context::Error,
242        >,
243        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
244    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
245        let _input = context
246            .input()
247            .downcast_ref::<DescribeGameSessionDetailsInput>()
248            .ok_or("failed to downcast to DescribeGameSessionDetailsInput")?;
249
250        let params = crate::config::endpoint::Params::builder()
251            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
252            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
253            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
254            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
255            .build()
256            .map_err(|err| {
257                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
258            })?;
259        cfg.interceptor_state()
260            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
261        ::std::result::Result::Ok(())
262    }
263}
264
265// The get_* functions below are generated from JMESPath expressions in the
266// operationContextParams trait. They target the operation's input shape.
267
268/// Error type for the `DescribeGameSessionDetailsError` operation.
269#[non_exhaustive]
270#[derive(::std::fmt::Debug)]
271pub enum DescribeGameSessionDetailsError {
272    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
273    InternalServiceException(crate::types::error::InternalServiceException),
274    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
275    InvalidRequestException(crate::types::error::InvalidRequestException),
276    /// <p>The requested resources was not found. The resource was either not created yet or deleted.</p>
277    NotFoundException(crate::types::error::NotFoundException),
278    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <code>RoutingStrategy</code> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified.</p>
279    TerminalRoutingStrategyException(crate::types::error::TerminalRoutingStrategyException),
280    /// <p>The client failed authentication. Clients should not retry such requests.</p>
281    UnauthorizedException(crate::types::error::UnauthorizedException),
282    /// <p>The requested operation is not supported in the Region specified.</p>
283    UnsupportedRegionException(crate::types::error::UnsupportedRegionException),
284    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
285    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
286    variable wildcard pattern and check `.code()`:
287     \
288    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
289     \
290    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DescribeGameSessionDetailsError) for what information is available for the error.")]
291    Unhandled(crate::error::sealed_unhandled::Unhandled),
292}
293impl DescribeGameSessionDetailsError {
294    /// Creates the `DescribeGameSessionDetailsError::Unhandled` variant from any error type.
295    pub fn unhandled(
296        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
297    ) -> Self {
298        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
299            source: err.into(),
300            meta: ::std::default::Default::default(),
301        })
302    }
303
304    /// Creates the `DescribeGameSessionDetailsError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
305    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
306        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
307            source: err.clone().into(),
308            meta: err,
309        })
310    }
311    ///
312    /// Returns error metadata, which includes the error code, message,
313    /// request ID, and potentially additional information.
314    ///
315    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
316        match self {
317            Self::InternalServiceException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
318            Self::InvalidRequestException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
319            Self::NotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
320            Self::TerminalRoutingStrategyException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
321            Self::UnauthorizedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
322            Self::UnsupportedRegionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
323            Self::Unhandled(e) => &e.meta,
324        }
325    }
326    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::InternalServiceException`.
327    pub fn is_internal_service_exception(&self) -> bool {
328        matches!(self, Self::InternalServiceException(_))
329    }
330    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::InvalidRequestException`.
331    pub fn is_invalid_request_exception(&self) -> bool {
332        matches!(self, Self::InvalidRequestException(_))
333    }
334    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::NotFoundException`.
335    pub fn is_not_found_exception(&self) -> bool {
336        matches!(self, Self::NotFoundException(_))
337    }
338    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::TerminalRoutingStrategyException`.
339    pub fn is_terminal_routing_strategy_exception(&self) -> bool {
340        matches!(self, Self::TerminalRoutingStrategyException(_))
341    }
342    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::UnauthorizedException`.
343    pub fn is_unauthorized_exception(&self) -> bool {
344        matches!(self, Self::UnauthorizedException(_))
345    }
346    /// Returns `true` if the error kind is `DescribeGameSessionDetailsError::UnsupportedRegionException`.
347    pub fn is_unsupported_region_exception(&self) -> bool {
348        matches!(self, Self::UnsupportedRegionException(_))
349    }
350}
351impl ::std::error::Error for DescribeGameSessionDetailsError {
352    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
353        match self {
354            Self::InternalServiceException(_inner) => ::std::option::Option::Some(_inner),
355            Self::InvalidRequestException(_inner) => ::std::option::Option::Some(_inner),
356            Self::NotFoundException(_inner) => ::std::option::Option::Some(_inner),
357            Self::TerminalRoutingStrategyException(_inner) => ::std::option::Option::Some(_inner),
358            Self::UnauthorizedException(_inner) => ::std::option::Option::Some(_inner),
359            Self::UnsupportedRegionException(_inner) => ::std::option::Option::Some(_inner),
360            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
361        }
362    }
363}
364impl ::std::fmt::Display for DescribeGameSessionDetailsError {
365    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
366        match self {
367            Self::InternalServiceException(_inner) => _inner.fmt(f),
368            Self::InvalidRequestException(_inner) => _inner.fmt(f),
369            Self::NotFoundException(_inner) => _inner.fmt(f),
370            Self::TerminalRoutingStrategyException(_inner) => _inner.fmt(f),
371            Self::UnauthorizedException(_inner) => _inner.fmt(f),
372            Self::UnsupportedRegionException(_inner) => _inner.fmt(f),
373            Self::Unhandled(_inner) => {
374                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
375                    write!(f, "unhandled error ({code})")
376                } else {
377                    f.write_str("unhandled error")
378                }
379            }
380        }
381    }
382}
383impl ::aws_smithy_types::retry::ProvideErrorKind for DescribeGameSessionDetailsError {
384    fn code(&self) -> ::std::option::Option<&str> {
385        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
386    }
387    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
388        ::std::option::Option::None
389    }
390}
391impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DescribeGameSessionDetailsError {
392    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
393        match self {
394            Self::InternalServiceException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
395            Self::InvalidRequestException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
396            Self::NotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
397            Self::TerminalRoutingStrategyException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
398            Self::UnauthorizedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
399            Self::UnsupportedRegionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
400            Self::Unhandled(_inner) => &_inner.meta,
401        }
402    }
403}
404impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DescribeGameSessionDetailsError {
405    fn create_unhandled_error(
406        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
407        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
408    ) -> Self {
409        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
410            source,
411            meta: meta.unwrap_or_default(),
412        })
413    }
414}
415impl ::aws_types::request_id::RequestId for crate::operation::describe_game_session_details::DescribeGameSessionDetailsError {
416    fn request_id(&self) -> Option<&str> {
417        self.meta().request_id()
418    }
419}
420
421pub use crate::operation::describe_game_session_details::_describe_game_session_details_output::DescribeGameSessionDetailsOutput;
422
423pub use crate::operation::describe_game_session_details::_describe_game_session_details_input::DescribeGameSessionDetailsInput;
424
425mod _describe_game_session_details_input;
426
427mod _describe_game_session_details_output;
428
429/// Builders
430pub mod builders;
431
432/// Paginator for this operation
433pub mod paginator;