aws_sdk_sts/protocol_serde/
shape_assume_role_with_web_identity.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::unnecessary_wraps)]
3pub fn de_assume_role_with_web_identity_http_error(
4    _response_status: u16,
5    _response_headers: &::aws_smithy_runtime_api::http::Headers,
6    _response_body: &[u8],
7) -> std::result::Result<
8    crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityOutput,
9    crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError,
10> {
11    #[allow(unused_mut)]
12    let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
13        .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
14    generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
15    let generic = generic_builder.build();
16    let error_code = match generic.code() {
17        Some(code) => code,
18        None => return Err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled(generic)),
19    };
20
21    let _error_message = generic.message().map(|msg| msg.to_owned());
22    Err(match error_code {
23        "ExpiredTokenException" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::ExpiredTokenException({
24            #[allow(unused_mut)]
25            let mut tmp = {
26                #[allow(unused_mut)]
27                let mut output = crate::types::error::builders::ExpiredTokenExceptionBuilder::default();
28                output = crate::protocol_serde::shape_expired_token_exception::de_expired_token_exception_xml_err(_response_body, output)
29                    .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
30                let output = output.meta(generic);
31                output.build()
32            };
33            if tmp.message.is_none() {
34                tmp.message = _error_message;
35            }
36            tmp
37        }),
38        "IDPCommunicationError" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::IdpCommunicationErrorException({
39            #[allow(unused_mut)]
40            let mut tmp = {
41                #[allow(unused_mut)]
42                let mut output = crate::types::error::builders::IdpCommunicationErrorExceptionBuilder::default();
43                output = crate::protocol_serde::shape_idp_communication_error_exception::de_idp_communication_error_exception_xml_err(
44                    _response_body,
45                    output,
46                )
47                .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
48                let output = output.meta(generic);
49                output.build()
50            };
51            if tmp.message.is_none() {
52                tmp.message = _error_message;
53            }
54            tmp
55        }),
56        "IDPRejectedClaim" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::IdpRejectedClaimException({
57            #[allow(unused_mut)]
58            let mut tmp = {
59                #[allow(unused_mut)]
60                let mut output = crate::types::error::builders::IdpRejectedClaimExceptionBuilder::default();
61                output = crate::protocol_serde::shape_idp_rejected_claim_exception::de_idp_rejected_claim_exception_xml_err(_response_body, output)
62                    .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
63                let output = output.meta(generic);
64                output.build()
65            };
66            if tmp.message.is_none() {
67                tmp.message = _error_message;
68            }
69            tmp
70        }),
71        "InvalidIdentityToken" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::InvalidIdentityTokenException({
72            #[allow(unused_mut)]
73            let mut tmp = {
74                #[allow(unused_mut)]
75                let mut output = crate::types::error::builders::InvalidIdentityTokenExceptionBuilder::default();
76                output = crate::protocol_serde::shape_invalid_identity_token_exception::de_invalid_identity_token_exception_xml_err(
77                    _response_body,
78                    output,
79                )
80                .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
81                let output = output.meta(generic);
82                output.build()
83            };
84            if tmp.message.is_none() {
85                tmp.message = _error_message;
86            }
87            tmp
88        }),
89        "MalformedPolicyDocument" => {
90            crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::MalformedPolicyDocumentException({
91                #[allow(unused_mut)]
92                let mut tmp = {
93                    #[allow(unused_mut)]
94                    let mut output = crate::types::error::builders::MalformedPolicyDocumentExceptionBuilder::default();
95                    output = crate::protocol_serde::shape_malformed_policy_document_exception::de_malformed_policy_document_exception_xml_err(
96                        _response_body,
97                        output,
98                    )
99                    .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
100                    let output = output.meta(generic);
101                    output.build()
102                };
103                if tmp.message.is_none() {
104                    tmp.message = _error_message;
105                }
106                tmp
107            })
108        }
109        "PackedPolicyTooLarge" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::PackedPolicyTooLargeException({
110            #[allow(unused_mut)]
111            let mut tmp = {
112                #[allow(unused_mut)]
113                let mut output = crate::types::error::builders::PackedPolicyTooLargeExceptionBuilder::default();
114                output = crate::protocol_serde::shape_packed_policy_too_large_exception::de_packed_policy_too_large_exception_xml_err(
115                    _response_body,
116                    output,
117                )
118                .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
119                let output = output.meta(generic);
120                output.build()
121            };
122            if tmp.message.is_none() {
123                tmp.message = _error_message;
124            }
125            tmp
126        }),
127        "RegionDisabledException" => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::RegionDisabledException({
128            #[allow(unused_mut)]
129            let mut tmp = {
130                #[allow(unused_mut)]
131                let mut output = crate::types::error::builders::RegionDisabledExceptionBuilder::default();
132                output = crate::protocol_serde::shape_region_disabled_exception::de_region_disabled_exception_xml_err(_response_body, output)
133                    .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
134                let output = output.meta(generic);
135                output.build()
136            };
137            if tmp.message.is_none() {
138                tmp.message = _error_message;
139            }
140            tmp
141        }),
142        _ => crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::generic(generic),
143    })
144}
145
146#[allow(clippy::unnecessary_wraps)]
147pub fn de_assume_role_with_web_identity_http_response(
148    _response_status: u16,
149    _response_headers: &::aws_smithy_runtime_api::http::Headers,
150    _response_body: &[u8],
151) -> std::result::Result<
152    crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityOutput,
153    crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError,
154> {
155    Ok({
156        #[allow(unused_mut)]
157        let mut output = crate::operation::assume_role_with_web_identity::builders::AssumeRoleWithWebIdentityOutputBuilder::default();
158        output = crate::protocol_serde::shape_assume_role_with_web_identity::de_assume_role_with_web_identity(_response_body, output)
159            .map_err(crate::operation::assume_role_with_web_identity::AssumeRoleWithWebIdentityError::unhandled)?;
160        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
161        output.build()
162    })
163}
164
165#[allow(unused_mut)]
166pub fn de_assume_role_with_web_identity(
167    inp: &[u8],
168    mut builder: crate::operation::assume_role_with_web_identity::builders::AssumeRoleWithWebIdentityOutputBuilder,
169) -> std::result::Result<
170    crate::operation::assume_role_with_web_identity::builders::AssumeRoleWithWebIdentityOutputBuilder,
171    ::aws_smithy_xml::decode::XmlDecodeError,
172> {
173    let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
174
175    #[allow(unused_mut)]
176    let mut decoder = doc.root_element()?;
177    #[allow(unused_variables)]
178    let start_el = decoder.start_el();
179    if !(start_el.matches("AssumeRoleWithWebIdentityResponse")) {
180        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
181            "invalid root, expected AssumeRoleWithWebIdentityResponse got {start_el:?}"
182        )));
183    }
184    if let Some(mut result_tag) = decoder.next_tag() {
185        let start_el = result_tag.start_el();
186        if !(start_el.matches("AssumeRoleWithWebIdentityResult")) {
187            return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
188                "invalid result, expected AssumeRoleWithWebIdentityResult got {start_el:?}"
189            )));
190        }
191        while let Some(mut tag) = result_tag.next_tag() {
192            match tag.start_el() {
193            s if s.matches("Credentials") /* Credentials com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$Credentials */ =>  {
194                let var_1 =
195                    Some(
196                        crate::protocol_serde::shape_credentials::de_credentials(&mut tag)
197                        ?
198                    )
199                ;
200                builder = builder.set_credentials(var_1);
201            }
202            ,
203            s if s.matches("SubjectFromWebIdentityToken") /* SubjectFromWebIdentityToken com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$SubjectFromWebIdentityToken */ =>  {
204                let var_2 =
205                    Some(
206                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
207                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
208                            .into()
209                        )
210                        ?
211                    )
212                ;
213                builder = builder.set_subject_from_web_identity_token(var_2);
214            }
215            ,
216            s if s.matches("AssumedRoleUser") /* AssumedRoleUser com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$AssumedRoleUser */ =>  {
217                let var_3 =
218                    Some(
219                        crate::protocol_serde::shape_assumed_role_user::de_assumed_role_user(&mut tag)
220                        ?
221                    )
222                ;
223                builder = builder.set_assumed_role_user(var_3);
224            }
225            ,
226            s if s.matches("PackedPolicySize") /* PackedPolicySize com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$PackedPolicySize */ =>  {
227                let var_4 =
228                    Some(
229                         {
230                            <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
231                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
232                            )
233                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.sts#nonNegativeIntegerType`)"))
234                        }
235                        ?
236                    )
237                ;
238                builder = builder.set_packed_policy_size(var_4);
239            }
240            ,
241            s if s.matches("Provider") /* Provider com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$Provider */ =>  {
242                let var_5 =
243                    Some(
244                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
245                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
246                            .into()
247                        )
248                        ?
249                    )
250                ;
251                builder = builder.set_provider(var_5);
252            }
253            ,
254            s if s.matches("Audience") /* Audience com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$Audience */ =>  {
255                let var_6 =
256                    Some(
257                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
258                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
259                            .into()
260                        )
261                        ?
262                    )
263                ;
264                builder = builder.set_audience(var_6);
265            }
266            ,
267            s if s.matches("SourceIdentity") /* SourceIdentity com.amazonaws.sts.synthetic#AssumeRoleWithWebIdentityOutput$SourceIdentity */ =>  {
268                let var_7 =
269                    Some(
270                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
271                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
272                            .into()
273                        )
274                        ?
275                    )
276                ;
277                builder = builder.set_source_identity(var_7);
278            }
279            ,
280            _ => {}
281        }
282        }
283    } else {
284        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(
285            "expected AssumeRoleWithWebIdentityResult tag",
286        ));
287    };
288    Ok(builder)
289}