Skip to main content

aws_sdk_signin/operation/
get_resource_policy.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `GetResourcePolicy`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct GetResourcePolicy;
6impl GetResourcePolicy {
7    /// Creates a new `GetResourcePolicy`
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_resource_policy::GetResourcePolicyInput,
14                    ) -> ::std::result::Result<crate::operation::get_resource_policy::GetResourcePolicyOutput, ::aws_smithy_runtime_api::client::result::SdkError<crate::operation::get_resource_policy::GetResourcePolicyError, ::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_resource_policy::GetResourcePolicyError>().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_resource_policy::GetResourcePolicyOutput>().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_resource_policy::GetResourcePolicyInput,
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                            "GetResourcePolicy",
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.GetResourcePolicy",
45                                "rpc.service" = "Signin",
46                                "rpc.method" = "GetResourcePolicy",
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 GetResourcePolicy {
72                fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
73                    let mut cfg = ::aws_smithy_types::config_bag::Layer::new("GetResourcePolicy");
74
75                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(GetResourcePolicyRequestSerializer));
76                    cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(GetResourcePolicyResponseDeserializer));
77
78                    cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
79                        crate::config::auth::Params::builder()
80                            .operation_name("GetResourcePolicy")
81                            .build()
82                            .expect("required fields set")
83                    ));
84
85                    cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
86                            "GetResourcePolicy",
87                            "Signin",
88                        ));
89let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
90                            signing_options.double_uri_encode = true;
91                            signing_options.content_sha256_header = false;
92                            signing_options.normalize_uri_path = true;
93                            signing_options.payload_override = None;
94
95                            cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
96                                signing_options,
97                                ..::std::default::Default::default()
98                            });
99
100                    ::std::option::Option::Some(cfg.freeze())
101                }
102
103                fn runtime_components(&self, _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
104                    #[allow(unused_mut)]
105                    let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("GetResourcePolicy")
106                            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default()))
107.with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(GetResourcePolicyEndpointParamsInterceptor))
108                            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<crate::operation::get_resource_policy::GetResourcePolicyError>::new())
109.with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<crate::operation::get_resource_policy::GetResourcePolicyError>::new())
110.with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<crate::operation::get_resource_policy::GetResourcePolicyError>::new())
111.with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<crate::operation::get_resource_policy::GetResourcePolicyError>::new());
112
113                    ::std::borrow::Cow::Owned(rcb)
114                }
115            }
116
117
118#[derive(Debug)]
119            struct GetResourcePolicyResponseDeserializer;
120            impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for GetResourcePolicyResponseDeserializer {
121
122
123                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 {
124                    let (success, status) = (response.status().is_success(), response.status().as_u16());
125            let headers = response.headers();
126            let body = response.body().bytes().expect("body loaded");
127            #[allow(unused_mut)]
128            let mut force_error = false;
129            ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
130            let parse_result = if !success && status != 200 || force_error {
131                crate::protocol_serde::shape_get_resource_policy::de_get_resource_policy_http_error(status, headers, body, _cfg)
132            } else {
133                crate::protocol_serde::shape_get_resource_policy::de_get_resource_policy_http_response(status, headers, body, _cfg)
134            };
135            crate::protocol_serde::type_erase_result(parse_result)
136                }
137            }
138#[derive(Debug)]
139            struct GetResourcePolicyRequestSerializer;
140            impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for GetResourcePolicyRequestSerializer {
141                #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
142                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> {
143                    let input = input.downcast::<crate::operation::get_resource_policy::GetResourcePolicyInput>().expect("correct type");
144                    let _header_serialization_settings = _cfg.load::<crate::serialization_settings::HeaderSerializationSettings>().cloned().unwrap_or_default();
145                    let mut request_builder = {
146                        #[allow(clippy::uninlined_format_args)]
147fn uri_base(_input: &crate::operation::get_resource_policy::GetResourcePolicyInput, output: &mut ::std::string::String) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
148    use ::std::fmt::Write as _;
149    ::std::write!(output, "/get-resource-policy").expect("formatting should succeed");
150    ::std::result::Result::Ok(())
151}
152#[allow(clippy::unnecessary_wraps)]
153fn update_http_builder(
154                input: &crate::operation::get_resource_policy::GetResourcePolicyInput,
155                builder: ::http_1x::request::Builder
156            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
157    let mut uri = ::std::string::String::new();
158    uri_base(input, &mut uri)?;
159    ::std::result::Result::Ok(builder.method("POST").uri(uri))
160}
161let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
162builder
163                    };
164                    let body = ::aws_smithy_types::body::SdkBody::from("");
165
166                    ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
167                }
168            }
169#[derive(Debug)]
170            struct GetResourcePolicyEndpointParamsInterceptor;
171
172            #[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
173            impl ::aws_smithy_runtime_api::client::interceptors::Intercept for GetResourcePolicyEndpointParamsInterceptor {
174                fn name(&self) -> &'static str {
175                    "GetResourcePolicyEndpointParamsInterceptor"
176                }
177
178                fn read_before_execution(
179                    &self,
180                    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>,
181                    cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
182                ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
183                    let _input = context.input()
184                        .downcast_ref::<GetResourcePolicyInput>()
185                        .ok_or("failed to downcast to GetResourcePolicyInput")?;
186
187
188
189                    let params = crate::config::endpoint::Params::builder()
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.set_region(cfg.load::<::aws_types::region::Region>().map(|r|r.as_ref().to_owned()))
194.set_is_control_plane(Some(true))
195                        .build()
196                        .map_err(|err| ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err))?;
197                    cfg.interceptor_state().store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
198                    ::std::result::Result::Ok(())
199                }
200            }
201
202            // The get_* functions below are generated from JMESPath expressions in the
203            // operationContextParams trait. They target the operation's input shape.
204
205
206
207/// Error type for the `GetResourcePolicyError` operation.
208#[non_exhaustive]
209#[derive(::std::fmt::Debug)]
210pub enum GetResourcePolicyError {
211    /// 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.
212    AccessDeniedException(crate::types::error::AccessDeniedException),
213    /// 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.
214    InternalServerException(crate::types::error::InternalServerException),
215    /// Error thrown when requested resource is not found HTTP Status Code: 404 Not Found Used when the specified resource does not exist
216    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
217    /// 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
218    TooManyRequestsError(crate::types::error::TooManyRequestsError),
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-GetResourcePolicyError) for what information is available for the error.")]
226                    Unhandled(crate::error::sealed_unhandled::Unhandled),
227}
228impl GetResourcePolicyError {
229    /// Creates the `GetResourcePolicyError::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 `GetResourcePolicyError::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::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
245            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
246            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
247            Self::TooManyRequestsError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
248            Self::Unhandled(e) => &e.meta,
249        }
250    }
251    /// Returns `true` if the error kind is `GetResourcePolicyError::AccessDeniedException`.
252    pub fn is_access_denied_exception(&self) -> bool {
253        matches!(self, Self::AccessDeniedException(_))
254    }
255    /// Returns `true` if the error kind is `GetResourcePolicyError::InternalServerException`.
256    pub fn is_internal_server_exception(&self) -> bool {
257        matches!(self, Self::InternalServerException(_))
258    }
259    /// Returns `true` if the error kind is `GetResourcePolicyError::ResourceNotFoundException`.
260    pub fn is_resource_not_found_exception(&self) -> bool {
261        matches!(self, Self::ResourceNotFoundException(_))
262    }
263    /// Returns `true` if the error kind is `GetResourcePolicyError::TooManyRequestsError`.
264    pub fn is_too_many_requests_error(&self) -> bool {
265        matches!(self, Self::TooManyRequestsError(_))
266    }
267}
268impl ::std::error::Error for GetResourcePolicyError {
269    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
270        match self {
271            Self::AccessDeniedException(_inner) =>
272            ::std::option::Option::Some(_inner)
273            ,
274            Self::InternalServerException(_inner) =>
275            ::std::option::Option::Some(_inner)
276            ,
277            Self::ResourceNotFoundException(_inner) =>
278            ::std::option::Option::Some(_inner)
279            ,
280            Self::TooManyRequestsError(_inner) =>
281            ::std::option::Option::Some(_inner)
282            ,
283            Self::Unhandled(_inner) => {
284                ::std::option::Option::Some(&*_inner.source)
285            }
286        }
287    }
288}
289impl ::std::fmt::Display for GetResourcePolicyError {
290    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
291        match self {
292            Self::AccessDeniedException(_inner) =>
293            _inner.fmt(f)
294            ,
295            Self::InternalServerException(_inner) =>
296            _inner.fmt(f)
297            ,
298            Self::ResourceNotFoundException(_inner) =>
299            _inner.fmt(f)
300            ,
301            Self::TooManyRequestsError(_inner) =>
302            _inner.fmt(f)
303            ,
304            Self::Unhandled(_inner) => {
305                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
306                                                        write!(f, "unhandled error ({code})")
307                                                    } else {
308                                                        f.write_str("unhandled error")
309                                                    }
310            }
311        }
312    }
313}
314impl ::aws_smithy_types::retry::ProvideErrorKind for GetResourcePolicyError {
315    fn code(&self) -> ::std::option::Option<&str> {
316        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
317    }
318    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
319        ::std::option::Option::None
320    }
321}
322impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for GetResourcePolicyError {
323    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
324        match self {
325            Self::AccessDeniedException(_inner) =>
326            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
327            ,
328            Self::InternalServerException(_inner) =>
329            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
330            ,
331            Self::ResourceNotFoundException(_inner) =>
332            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
333            ,
334            Self::TooManyRequestsError(_inner) =>
335            ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
336            ,
337            Self::Unhandled(_inner) => {
338                &_inner.meta
339            }
340        }
341    }
342}
343impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for GetResourcePolicyError {
344    fn create_unhandled_error(
345                        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
346                        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>
347                    ) -> Self {
348        Self::Unhandled(crate::error::sealed_unhandled::Unhandled { source, meta: meta.unwrap_or_default() })
349    }
350}
351impl ::aws_types::request_id::RequestId for crate::operation::get_resource_policy::GetResourcePolicyError {
352                                fn request_id(&self) -> Option<&str> {
353                                    self.meta().request_id()
354                                }
355                            }
356
357pub use crate::operation::get_resource_policy::_get_resource_policy_input::GetResourcePolicyInput;
358
359pub use crate::operation::get_resource_policy::_get_resource_policy_output::GetResourcePolicyOutput;
360
361mod _get_resource_policy_input;
362
363mod _get_resource_policy_output;
364
365/// Builders
366pub mod builders;
367