aws_sdk_redshift/protocol_serde/
shape_create_usage_limit.rs1#[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") => {
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") => {
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") => {
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") => {
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") => {
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") => {
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") => {
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") => {
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}