aws_sdk_redshift/protocol_serde/
shape_create_usage_limit.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::unnecessary_wraps)]
3pub fn de_create_usage_limit_http_error(
4    _response_status: u16,
5    _response_headers: &::aws_smithy_runtime_api::http::Headers,
6    _response_body: &[u8],
7) -> std::result::Result<crate::operation::create_usage_limit::CreateUsageLimitOutput, crate::operation::create_usage_limit::CreateUsageLimitError> {
8    #[allow(unused_mut)]
9    let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
10        .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
11    generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
12    let generic = generic_builder.build();
13    let error_code = match generic.code() {
14        Some(code) => code,
15        None => return Err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled(generic)),
16    };
17
18    let _error_message = generic.message().map(|msg| msg.to_owned());
19    Err(match error_code {
20        "ClusterNotFound" => crate::operation::create_usage_limit::CreateUsageLimitError::ClusterNotFoundFault({
21            #[allow(unused_mut)]
22            let mut tmp = {
23                #[allow(unused_mut)]
24                let mut output = crate::types::error::builders::ClusterNotFoundFaultBuilder::default();
25                output = crate::protocol_serde::shape_cluster_not_found_fault::de_cluster_not_found_fault_xml_err(_response_body, output)
26                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
27                let output = output.meta(generic);
28                output.build()
29            };
30            if tmp.message.is_none() {
31                tmp.message = _error_message;
32            }
33            tmp
34        }),
35        "InvalidClusterState" => crate::operation::create_usage_limit::CreateUsageLimitError::InvalidClusterStateFault({
36            #[allow(unused_mut)]
37            let mut tmp = {
38                #[allow(unused_mut)]
39                let mut output = crate::types::error::builders::InvalidClusterStateFaultBuilder::default();
40                output = crate::protocol_serde::shape_invalid_cluster_state_fault::de_invalid_cluster_state_fault_xml_err(_response_body, output)
41                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
42                let output = output.meta(generic);
43                output.build()
44            };
45            if tmp.message.is_none() {
46                tmp.message = _error_message;
47            }
48            tmp
49        }),
50        "InvalidUsageLimit" => crate::operation::create_usage_limit::CreateUsageLimitError::InvalidUsageLimitFault({
51            #[allow(unused_mut)]
52            let mut tmp = {
53                #[allow(unused_mut)]
54                let mut output = crate::types::error::builders::InvalidUsageLimitFaultBuilder::default();
55                output = crate::protocol_serde::shape_invalid_usage_limit_fault::de_invalid_usage_limit_fault_xml_err(_response_body, output)
56                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
57                let output = output.meta(generic);
58                output.build()
59            };
60            if tmp.message.is_none() {
61                tmp.message = _error_message;
62            }
63            tmp
64        }),
65        "LimitExceededFault" => crate::operation::create_usage_limit::CreateUsageLimitError::LimitExceededFault({
66            #[allow(unused_mut)]
67            let mut tmp = {
68                #[allow(unused_mut)]
69                let mut output = crate::types::error::builders::LimitExceededFaultBuilder::default();
70                output = crate::protocol_serde::shape_limit_exceeded_fault::de_limit_exceeded_fault_xml_err(_response_body, output)
71                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
72                let output = output.meta(generic);
73                output.build()
74            };
75            if tmp.message.is_none() {
76                tmp.message = _error_message;
77            }
78            tmp
79        }),
80        "TagLimitExceededFault" => crate::operation::create_usage_limit::CreateUsageLimitError::TagLimitExceededFault({
81            #[allow(unused_mut)]
82            let mut tmp = {
83                #[allow(unused_mut)]
84                let mut output = crate::types::error::builders::TagLimitExceededFaultBuilder::default();
85                output = crate::protocol_serde::shape_tag_limit_exceeded_fault::de_tag_limit_exceeded_fault_xml_err(_response_body, output)
86                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
87                let output = output.meta(generic);
88                output.build()
89            };
90            if tmp.message.is_none() {
91                tmp.message = _error_message;
92            }
93            tmp
94        }),
95        "UnsupportedOperation" => crate::operation::create_usage_limit::CreateUsageLimitError::UnsupportedOperationFault({
96            #[allow(unused_mut)]
97            let mut tmp = {
98                #[allow(unused_mut)]
99                let mut output = crate::types::error::builders::UnsupportedOperationFaultBuilder::default();
100                output = crate::protocol_serde::shape_unsupported_operation_fault::de_unsupported_operation_fault_xml_err(_response_body, output)
101                    .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
102                let output = output.meta(generic);
103                output.build()
104            };
105            if tmp.message.is_none() {
106                tmp.message = _error_message;
107            }
108            tmp
109        }),
110        "UsageLimitAlreadyExists" => crate::operation::create_usage_limit::CreateUsageLimitError::UsageLimitAlreadyExistsFault({
111            #[allow(unused_mut)]
112            let mut tmp = {
113                #[allow(unused_mut)]
114                let mut output = crate::types::error::builders::UsageLimitAlreadyExistsFaultBuilder::default();
115                output = crate::protocol_serde::shape_usage_limit_already_exists_fault::de_usage_limit_already_exists_fault_xml_err(
116                    _response_body,
117                    output,
118                )
119                .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
120                let output = output.meta(generic);
121                output.build()
122            };
123            if tmp.message.is_none() {
124                tmp.message = _error_message;
125            }
126            tmp
127        }),
128        _ => crate::operation::create_usage_limit::CreateUsageLimitError::generic(generic),
129    })
130}
131
132#[allow(clippy::unnecessary_wraps)]
133pub fn de_create_usage_limit_http_response(
134    _response_status: u16,
135    _response_headers: &::aws_smithy_runtime_api::http::Headers,
136    _response_body: &[u8],
137) -> std::result::Result<crate::operation::create_usage_limit::CreateUsageLimitOutput, crate::operation::create_usage_limit::CreateUsageLimitError> {
138    Ok({
139        #[allow(unused_mut)]
140        let mut output = crate::operation::create_usage_limit::builders::CreateUsageLimitOutputBuilder::default();
141        output = crate::protocol_serde::shape_create_usage_limit::de_create_usage_limit(_response_body, output)
142            .map_err(crate::operation::create_usage_limit::CreateUsageLimitError::unhandled)?;
143        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
144        output.build()
145    })
146}
147
148#[allow(unused_mut)]
149pub fn de_create_usage_limit(
150    inp: &[u8],
151    mut builder: crate::operation::create_usage_limit::builders::CreateUsageLimitOutputBuilder,
152) -> std::result::Result<crate::operation::create_usage_limit::builders::CreateUsageLimitOutputBuilder, ::aws_smithy_xml::decode::XmlDecodeError> {
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("CreateUsageLimitResponse")) {
160        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
161            "invalid root, expected CreateUsageLimitResponse 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("CreateUsageLimitResult")) {
168            return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
169                "invalid result, expected CreateUsageLimitResult 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("UsageLimitId") /* UsageLimitId com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$UsageLimitId */ =>  {
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_usage_limit_id(var_1);
186            }
187            ,
188            s if s.matches("ClusterIdentifier") /* ClusterIdentifier com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$ClusterIdentifier */ =>  {
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_cluster_identifier(var_2);
199            }
200            ,
201            s if s.matches("FeatureType") /* FeatureType com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$FeatureType */ =>  {
202                let var_3 =
203                    Some(
204                        Result::<crate::types::UsageLimitFeatureType, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
205                            crate::types::UsageLimitFeatureType::from(
206                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
207                            )
208                        )
209                        ?
210                    )
211                ;
212                builder = builder.set_feature_type(var_3);
213            }
214            ,
215            s if s.matches("LimitType") /* LimitType com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$LimitType */ =>  {
216                let var_4 =
217                    Some(
218                        Result::<crate::types::UsageLimitLimitType, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
219                            crate::types::UsageLimitLimitType::from(
220                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
221                            )
222                        )
223                        ?
224                    )
225                ;
226                builder = builder.set_limit_type(var_4);
227            }
228            ,
229            s if s.matches("Amount") /* Amount com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$Amount */ =>  {
230                let var_5 =
231                    Some(
232                         {
233                            <i64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive(
234                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
235                            )
236                            .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (long: `com.amazonaws.redshift#Long`)"))
237                        }
238                        ?
239                    )
240                ;
241                builder = builder.set_amount(var_5);
242            }
243            ,
244            s if s.matches("Period") /* Period com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$Period */ =>  {
245                let var_6 =
246                    Some(
247                        Result::<crate::types::UsageLimitPeriod, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
248                            crate::types::UsageLimitPeriod::from(
249                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
250                            )
251                        )
252                        ?
253                    )
254                ;
255                builder = builder.set_period(var_6);
256            }
257            ,
258            s if s.matches("BreachAction") /* BreachAction com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$BreachAction */ =>  {
259                let var_7 =
260                    Some(
261                        Result::<crate::types::UsageLimitBreachAction, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
262                            crate::types::UsageLimitBreachAction::from(
263                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
264                            )
265                        )
266                        ?
267                    )
268                ;
269                builder = builder.set_breach_action(var_7);
270            }
271            ,
272            s if s.matches("Tags") /* Tags com.amazonaws.redshift.synthetic#CreateUsageLimitOutput$Tags */ =>  {
273                let var_8 =
274                    Some(
275                        crate::protocol_serde::shape_tag_list::de_tag_list(&mut tag)
276                        ?
277                    )
278                ;
279                builder = builder.set_tags(var_8);
280            }
281            ,
282            _ => {}
283        }
284        }
285    } else {
286        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom("expected CreateUsageLimitResult tag"));
287    };
288    Ok(builder)
289}