aws_sdk_redshift/protocol_serde/
shape_authorize_endpoint_access.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::unnecessary_wraps)]
3pub fn de_authorize_endpoint_access_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::authorize_endpoint_access::AuthorizeEndpointAccessOutput,
9    crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError,
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::authorize_endpoint_access::AuthorizeEndpointAccessError::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 => {
19            return Err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled(
20                generic,
21            ))
22        }
23    };
24
25    let _error_message = generic.message().map(|msg| msg.to_owned());
26    Err(match error_code {
27        "ClusterNotFound" => crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::ClusterNotFoundFault({
28            #[allow(unused_mut)]
29            let mut tmp = {
30                #[allow(unused_mut)]
31                let mut output = crate::types::error::builders::ClusterNotFoundFaultBuilder::default();
32                output = crate::protocol_serde::shape_cluster_not_found_fault::de_cluster_not_found_fault_xml_err(_response_body, output)
33                    .map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
34                let output = output.meta(generic);
35                output.build()
36            };
37            if tmp.message.is_none() {
38                tmp.message = _error_message;
39            }
40            tmp
41        }),
42        "EndpointAuthorizationAlreadyExists" => {
43            crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::EndpointAuthorizationAlreadyExistsFault({
44                #[allow(unused_mut)]
45                let mut tmp = {
46                    #[allow(unused_mut)]
47                    let mut output = crate::types::error::builders::EndpointAuthorizationAlreadyExistsFaultBuilder::default();
48                    output = crate::protocol_serde::shape_endpoint_authorization_already_exists_fault::de_endpoint_authorization_already_exists_fault_xml_err(_response_body, output).map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
49                    let output = output.meta(generic);
50                    output.build()
51                };
52                if tmp.message.is_none() {
53                    tmp.message = _error_message;
54                }
55                tmp
56            })
57        }
58        "EndpointAuthorizationsPerClusterLimitExceeded" => {
59            crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::EndpointAuthorizationsPerClusterLimitExceededFault({
60                #[allow(unused_mut)]
61                let mut tmp = {
62                    #[allow(unused_mut)]
63                    let mut output = crate::types::error::builders::EndpointAuthorizationsPerClusterLimitExceededFaultBuilder::default();
64                    output = crate::protocol_serde::shape_endpoint_authorizations_per_cluster_limit_exceeded_fault::de_endpoint_authorizations_per_cluster_limit_exceeded_fault_xml_err(_response_body, output).map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
65                    let output = output.meta(generic);
66                    output.build()
67                };
68                if tmp.message.is_none() {
69                    tmp.message = _error_message;
70                }
71                tmp
72            })
73        }
74        "InvalidAuthorizationState" => crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::InvalidAuthorizationStateFault({
75            #[allow(unused_mut)]
76            let mut tmp = {
77                #[allow(unused_mut)]
78                let mut output = crate::types::error::builders::InvalidAuthorizationStateFaultBuilder::default();
79                output = crate::protocol_serde::shape_invalid_authorization_state_fault::de_invalid_authorization_state_fault_xml_err(
80                    _response_body,
81                    output,
82                )
83                .map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
84                let output = output.meta(generic);
85                output.build()
86            };
87            if tmp.message.is_none() {
88                tmp.message = _error_message;
89            }
90            tmp
91        }),
92        "InvalidClusterState" => crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::InvalidClusterStateFault({
93            #[allow(unused_mut)]
94            let mut tmp = {
95                #[allow(unused_mut)]
96                let mut output = crate::types::error::builders::InvalidClusterStateFaultBuilder::default();
97                output = crate::protocol_serde::shape_invalid_cluster_state_fault::de_invalid_cluster_state_fault_xml_err(_response_body, output)
98                    .map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
99                let output = output.meta(generic);
100                output.build()
101            };
102            if tmp.message.is_none() {
103                tmp.message = _error_message;
104            }
105            tmp
106        }),
107        "UnsupportedOperation" => crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::UnsupportedOperationFault({
108            #[allow(unused_mut)]
109            let mut tmp = {
110                #[allow(unused_mut)]
111                let mut output = crate::types::error::builders::UnsupportedOperationFaultBuilder::default();
112                output = crate::protocol_serde::shape_unsupported_operation_fault::de_unsupported_operation_fault_xml_err(_response_body, output)
113                    .map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
114                let output = output.meta(generic);
115                output.build()
116            };
117            if tmp.message.is_none() {
118                tmp.message = _error_message;
119            }
120            tmp
121        }),
122        _ => crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::generic(generic),
123    })
124}
125
126#[allow(clippy::unnecessary_wraps)]
127pub fn de_authorize_endpoint_access_http_response(
128    _response_status: u16,
129    _response_headers: &::aws_smithy_runtime_api::http::Headers,
130    _response_body: &[u8],
131) -> std::result::Result<
132    crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessOutput,
133    crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError,
134> {
135    Ok({
136        #[allow(unused_mut)]
137        let mut output = crate::operation::authorize_endpoint_access::builders::AuthorizeEndpointAccessOutputBuilder::default();
138        output = crate::protocol_serde::shape_authorize_endpoint_access::de_authorize_endpoint_access(_response_body, output)
139            .map_err(crate::operation::authorize_endpoint_access::AuthorizeEndpointAccessError::unhandled)?;
140        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
141        output.build()
142    })
143}
144
145#[allow(unused_mut)]
146pub fn de_authorize_endpoint_access(
147    inp: &[u8],
148    mut builder: crate::operation::authorize_endpoint_access::builders::AuthorizeEndpointAccessOutputBuilder,
149) -> std::result::Result<
150    crate::operation::authorize_endpoint_access::builders::AuthorizeEndpointAccessOutputBuilder,
151    ::aws_smithy_xml::decode::XmlDecodeError,
152> {
153    let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
154
155    #[allow(unused_mut)]
156    let mut decoder = doc.root_element()?;
157    #[allow(unused_variables)]
158    let start_el = decoder.start_el();
159    if !(start_el.matches("AuthorizeEndpointAccessResponse")) {
160        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
161            "invalid root, expected AuthorizeEndpointAccessResponse got {:?}",
162            start_el
163        )));
164    }
165    if let Some(mut result_tag) = decoder.next_tag() {
166        let start_el = result_tag.start_el();
167        if !(start_el.matches("AuthorizeEndpointAccessResult")) {
168            return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
169                "invalid result, expected AuthorizeEndpointAccessResult got {:?}",
170                start_el
171            )));
172        }
173        while let Some(mut tag) = result_tag.next_tag() {
174            match tag.start_el() {
175            s if s.matches("Grantor") /* Grantor com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$Grantor */ =>  {
176                let var_1 =
177                    Some(
178                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
179                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
180                            .into()
181                        )
182                        ?
183                    )
184                ;
185                builder = builder.set_grantor(var_1);
186            }
187            ,
188            s if s.matches("Grantee") /* Grantee com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$Grantee */ =>  {
189                let var_2 =
190                    Some(
191                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
192                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
193                            .into()
194                        )
195                        ?
196                    )
197                ;
198                builder = builder.set_grantee(var_2);
199            }
200            ,
201            s if s.matches("ClusterIdentifier") /* ClusterIdentifier com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$ClusterIdentifier */ =>  {
202                let var_3 =
203                    Some(
204                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
205                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
206                            .into()
207                        )
208                        ?
209                    )
210                ;
211                builder = builder.set_cluster_identifier(var_3);
212            }
213            ,
214            s if s.matches("AuthorizeTime") /* AuthorizeTime com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$AuthorizeTime */ =>  {
215                let var_4 =
216                    Some(
217                        ::aws_smithy_types::DateTime::from_str(
218                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
219                            , ::aws_smithy_types::date_time::Format::DateTimeWithOffset
220                        )
221                        .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (timestamp: `com.amazonaws.redshift#TStamp`)"))
222                        ?
223                    )
224                ;
225                builder = builder.set_authorize_time(var_4);
226            }
227            ,
228            s if s.matches("ClusterStatus") /* ClusterStatus com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$ClusterStatus */ =>  {
229                let var_5 =
230                    Some(
231                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
232                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
233                            .into()
234                        )
235                        ?
236                    )
237                ;
238                builder = builder.set_cluster_status(var_5);
239            }
240            ,
241            s if s.matches("Status") /* Status com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$Status */ =>  {
242                let var_6 =
243                    Some(
244                        Result::<crate::types::AuthorizationStatus, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
245                            crate::types::AuthorizationStatus::from(
246                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
247                            )
248                        )
249                        ?
250                    )
251                ;
252                builder = builder.set_status(var_6);
253            }
254            ,
255            s if s.matches("AllowedAllVPCs") /* AllowedAllVPCs com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$AllowedAllVPCs */ =>  {
256                let var_7 =
257                    Some(
258                         {
259                            <bool as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
260                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
261                            )
262                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (boolean: `com.amazonaws.redshift#Boolean`)"))
263                        }
264                        ?
265                    )
266                ;
267                builder = builder.set_allowed_all_vpcs(var_7);
268            }
269            ,
270            s if s.matches("AllowedVPCs") /* AllowedVPCs com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$AllowedVPCs */ =>  {
271                let var_8 =
272                    Some(
273                        crate::protocol_serde::shape_vpc_identifier_list::de_vpc_identifier_list(&mut tag)
274                        ?
275                    )
276                ;
277                builder = builder.set_allowed_vpcs(var_8);
278            }
279            ,
280            s if s.matches("EndpointCount") /* EndpointCount com.amazonaws.redshift.synthetic#AuthorizeEndpointAccessOutput$EndpointCount */ =>  {
281                let var_9 =
282                    Some(
283                         {
284                            <i32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
285                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
286                            )
287                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (integer: `com.amazonaws.redshift#Integer`)"))
288                        }
289                        ?
290                    )
291                ;
292                builder = builder.set_endpoint_count(var_9);
293            }
294            ,
295            _ => {}
296        }
297        }
298    } else {
299        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(
300            "expected AuthorizeEndpointAccessResult tag",
301        ));
302    };
303    Ok(builder)
304}