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