1 + | // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2 + | pub(crate) fn de_kitchen_sink<'a, I>(
|
3 + | tokens: &mut ::std::iter::Peekable<I>,
|
4 + | ) -> ::std::result::Result<
|
5 + | Option<crate::model::KitchenSink>,
|
6 + | ::aws_smithy_json::deserialize::error::DeserializeError,
|
7 + | >
|
8 + | where
|
9 + | I: Iterator<
|
10 + | Item = Result<
|
11 + | ::aws_smithy_json::deserialize::Token<'a>,
|
12 + | ::aws_smithy_json::deserialize::error::DeserializeError,
|
13 + | >,
|
14 + | >,
|
15 + | {
|
16 + | match tokens.next().transpose()? {
|
17 + | Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
|
18 + | Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
|
19 + | #[allow(unused_mut)]
|
20 + | let mut builder = crate::model::kitchen_sink::Builder::default();
|
21 + | loop {
|
22 + | match tokens.next().transpose()? {
|
23 + | Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
|
24 + | Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => {
|
25 + | match key.to_unescaped()?.as_ref() {
|
26 + | "Blob" => {
|
27 + | builder = builder.set_blob(
|
28 + | ::aws_smithy_json::deserialize::token::expect_blob_or_null(
|
29 + | tokens.next(),
|
30 + | )?,
|
31 + | );
|
32 + | }
|
33 + | "Boolean" => {
|
34 + | builder = builder.set_boolean(
|
35 + | ::aws_smithy_json::deserialize::token::expect_bool_or_null(
|
36 + | tokens.next(),
|
37 + | )?,
|
38 + | );
|
39 + | }
|
40 + | "Double" => {
|
41 + | builder = builder.set_double(
|
42 + | ::aws_smithy_json::deserialize::token::expect_number_or_null(
|
43 + | tokens.next(),
|
44 + | )?
|
45 + | .map(|v| v.to_f64_lossy()),
|
46 + | );
|
47 + | }
|
48 + | "EmptyStruct" => {
|
49 + | builder = builder.set_empty_struct(
|
50 + | crate::protocol_serde::shape_empty_struct::de_empty_struct(
|
51 + | tokens,
|
52 + | )?,
|
53 + | );
|
54 + | }
|
55 + | "Float" => {
|
56 + | builder = builder.set_float(
|
57 + | ::aws_smithy_json::deserialize::token::expect_number_or_null(
|
58 + | tokens.next(),
|
59 + | )?
|
60 + | .map(|v| v.to_f32_lossy()),
|
61 + | );
|
62 + | }
|
63 + | "HttpdateTimestamp" => {
|
64 + | builder = builder.set_httpdate_timestamp(
|
65 + | ::aws_smithy_json::deserialize::token::expect_timestamp_or_null(tokens.next(), ::aws_smithy_types::date_time::Format::HttpDate)?
|
66 + | );
|
67 + | }
|
68 + | "Integer" => {
|
69 + | builder = builder.set_integer(
|
70 + | ::aws_smithy_json::deserialize::token::expect_number_or_null(
|
71 + | tokens.next(),
|
72 + | )?
|
73 + | .map(i32::try_from)
|
74 + | .transpose()?,
|
75 + | );
|
76 + | }
|
77 + | "Iso8601Timestamp" => {
|
78 + | builder = builder.set_iso8601_timestamp(
|
79 + | ::aws_smithy_json::deserialize::token::expect_timestamp_or_null(tokens.next(), ::aws_smithy_types::date_time::Format::DateTime)?
|
80 + | );
|
81 + | }
|
82 + | "JsonValue" => {
|
83 + | builder = builder.set_json_value(
|
84 + | ::aws_smithy_json::deserialize::token::expect_string_or_null(
|
85 + | tokens.next(),
|
86 + | )?
|
87 + | .map(|s| s.to_unescaped().map(|u| u.into_owned()))
|
88 + | .transpose()?,
|
89 + | );
|
90 + | }
|
91 + | "ListOfLists" => {
|
92 + | builder = builder.set_list_of_lists(
|
93 + | crate::protocol_serde::shape_list_of_list_of_strings::de_list_of_list_of_strings(tokens)?
|
94 + | );
|
95 + | }
|
96 + | "ListOfMapsOfStrings" => {
|
97 + | builder = builder.set_list_of_maps_of_strings(
|
98 + | crate::protocol_serde::shape_list_of_maps_of_strings::de_list_of_maps_of_strings(tokens)?
|
99 + | );
|
100 + | }
|
101 + | "ListOfStrings" => {
|
102 + | builder = builder.set_list_of_strings(
|
103 + | crate::protocol_serde::shape_list_of_strings::de_list_of_strings(tokens)?
|
104 + | );
|
105 + | }
|
106 + | "ListOfStructs" => {
|
107 + | builder = builder.set_list_of_structs(
|
108 + | crate::protocol_serde::shape_list_of_structs::de_list_of_structs(tokens)?
|
109 + | );
|
110 + | }
|
111 + | "Long" => {
|
112 + | builder = builder.set_long(
|
113 + | ::aws_smithy_json::deserialize::token::expect_number_or_null(
|
114 + | tokens.next(),
|
115 + | )?
|
116 + | .map(i64::try_from)
|
117 + | .transpose()?,
|
118 + | );
|
119 + | }
|
120 + | "MapOfListsOfStrings" => {
|
121 + | builder = builder.set_map_of_lists_of_strings(
|
122 + | crate::protocol_serde::shape_map_of_lists_of_strings::de_map_of_lists_of_strings(tokens)?
|
123 + | );
|
124 + | }
|
125 + | "MapOfMaps" => {
|
126 + | builder = builder.set_map_of_maps(
|
127 + | crate::protocol_serde::shape_map_of_map_of_strings::de_map_of_map_of_strings(tokens)?
|
128 + | );
|
129 + | }
|
130 + | "MapOfStrings" => {
|
131 + | builder = builder.set_map_of_strings(
|
132 + | crate::protocol_serde::shape_map_of_strings::de_map_of_strings(
|
133 + | tokens,
|
134 + | )?,
|
135 + | );
|
136 + | }
|
137 + | "MapOfStructs" => {
|
138 + | builder = builder.set_map_of_structs(
|
139 + | crate::protocol_serde::shape_map_of_structs::de_map_of_structs(
|
140 + | tokens,
|
141 + | )?,
|
142 + | );
|
143 + | }
|
144 + | "RecursiveList" => {
|
145 + | builder = builder.set_recursive_list(
|
146 + | crate::protocol_serde::shape_list_of_kitchen_sinks::de_list_of_kitchen_sinks(tokens)?
|
147 + | );
|
148 + | }
|
149 + | "RecursiveMap" => {
|
150 + | builder = builder.set_recursive_map(
|
151 + | crate::protocol_serde::shape_map_of_kitchen_sinks::de_map_of_kitchen_sinks(tokens)?
|
152 + | );
|
153 + | }
|
154 + | "RecursiveStruct" => {
|
155 + | builder = builder.set_recursive_struct(
|
156 + | crate::protocol_serde::shape_kitchen_sink::de_kitchen_sink(
|
157 + | tokens,
|
158 + | )?
|
159 + | .map(Box::new),
|
160 + | );
|
161 + | }
|
162 + | "SimpleStruct" => {
|
163 + | builder = builder.set_simple_struct(
|
164 + | crate::protocol_serde::shape_simple_struct::de_simple_struct(
|
165 + | tokens,
|
166 + | )?,
|
167 + | );
|
168 + | }
|
169 + | "String" => {
|
170 + | builder = builder.set_string(
|
171 + | ::aws_smithy_json::deserialize::token::expect_string_or_null(
|
172 + | tokens.next(),
|
173 + | )?
|
174 + | .map(|s| s.to_unescaped().map(|u| u.into_owned()))
|
175 + | .transpose()?,
|
176 + | );
|
177 + | }
|
178 + | "StructWithJsonName" => {
|
179 + | builder = builder.set_struct_with_json_name(
|
180 + | crate::protocol_serde::shape_struct_with_json_name::de_struct_with_json_name(tokens)?
|
181 + | );
|
182 + | }
|
183 + | "Timestamp" => {
|
184 + | builder = builder.set_timestamp(
|
185 + | ::aws_smithy_json::deserialize::token::expect_timestamp_or_null(tokens.next(), ::aws_smithy_types::date_time::Format::EpochSeconds)?
|
186 + | );
|
187 + | }
|
188 + | "UnixTimestamp" => {
|
189 + | builder = builder.set_unix_timestamp(
|
190 + | ::aws_smithy_json::deserialize::token::expect_timestamp_or_null(tokens.next(), ::aws_smithy_types::date_time::Format::EpochSeconds)?
|
191 + | );
|
192 + | }
|
193 + | _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
|
194 + | }
|
195 + | }
|
196 + | other => {
|
197 + | return Err(
|
198 + | ::aws_smithy_json::deserialize::error::DeserializeError::custom(
|
199 + | format!("expected object key or end object, found: {other:?}"),
|
200 + | ),
|
201 + | )
|
202 + | }
|
203 + | }
|
204 + | }
|
205 + | Ok(Some(builder.build()))
|
206 + | }
|
207 + | _ => Err(
|
208 + | ::aws_smithy_json::deserialize::error::DeserializeError::custom(
|
209 + | "expected start object or null",
|
210 + | ),
|
211 + | ),
|
212 + | }
|
213 + | }
|
214 + |
|
215 + | pub fn ser_kitchen_sink(
|
216 + | object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
|
217 + | input: &crate::model::KitchenSink,
|
218 + | ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
|
219 + | if let Some(var_1) = &input.blob {
|
220 + | object
|
221 + | .key("Blob")
|
222 + | .string_unchecked(&::aws_smithy_types::base64::encode(var_1));
|
223 + | }
|
224 + | if let Some(var_2) = &input.boolean {
|
225 + | object.key("Boolean").boolean(*var_2);
|
226 + | }
|
227 + | if let Some(var_3) = &input.double {
|
228 + | object.key("Double").number(
|
229 + | #[allow(clippy::useless_conversion)]
|
230 + | ::aws_smithy_types::Number::Float((*var_3).into()),
|
231 + | );
|
232 + | }
|
233 + | if let Some(var_4) = &input.empty_struct {
|
234 + | #[allow(unused_mut)]
|
235 + | let mut object_5 = object.key("EmptyStruct").start_object();
|
236 + | crate::protocol_serde::shape_empty_struct::ser_empty_struct(&mut object_5, var_4)?;
|
237 + | object_5.finish();
|
238 + | }
|
239 + | if let Some(var_6) = &input.float {
|
240 + | object.key("Float").number(
|
241 + | #[allow(clippy::useless_conversion)]
|
242 + | ::aws_smithy_types::Number::Float((*var_6).into()),
|
243 + | );
|
244 + | }
|
245 + | if let Some(var_7) = &input.httpdate_timestamp {
|
246 + | object
|
247 + | .key("HttpdateTimestamp")
|
248 + | .date_time(var_7, ::aws_smithy_types::date_time::Format::HttpDate)?;
|
249 + | }
|
250 + | if let Some(var_8) = &input.integer {
|
251 + | object.key("Integer").number(
|
252 + | #[allow(clippy::useless_conversion)]
|
253 + | ::aws_smithy_types::Number::NegInt((*var_8).into()),
|
254 + | );
|
255 + | }
|
256 + | if let Some(var_9) = &input.iso8601_timestamp {
|
257 + | object
|
258 + | .key("Iso8601Timestamp")
|
259 + | .date_time(var_9, ::aws_smithy_types::date_time::Format::DateTime)?;
|
260 + | }
|
261 + | if let Some(var_10) = &input.json_value {
|
262 + | object.key("JsonValue").string(var_10.as_str());
|
263 + | }
|
264 + | if let Some(var_11) = &input.list_of_lists {
|
265 + | let mut array_12 = object.key("ListOfLists").start_array();
|
266 + | for item_13 in var_11 {
|
267 + | {
|
268 + | let mut array_14 = array_12.value().start_array();
|
269 + | for item_15 in item_13 {
|
270 + | {
|
271 + | array_14.value().string(item_15.as_str());
|
272 + | }
|
273 + | }
|
274 + | array_14.finish();
|
275 + | }
|
276 + | }
|
277 + | array_12.finish();
|
278 + | }
|
279 + | if let Some(var_16) = &input.list_of_maps_of_strings {
|
280 + | let mut array_17 = object.key("ListOfMapsOfStrings").start_array();
|
281 + | for item_18 in var_16 {
|
282 + | {
|
283 + | #[allow(unused_mut)]
|
284 + | let mut object_19 = array_17.value().start_object();
|
285 + | for (key_20, value_21) in item_18 {
|
286 + | {
|
287 + | object_19.key(key_20.as_str()).string(value_21.as_str());
|
288 + | }
|
289 + | }
|
290 + | object_19.finish();
|
291 + | }
|
292 + | }
|
293 + | array_17.finish();
|
294 + | }
|
295 + | if let Some(var_22) = &input.list_of_strings {
|
296 + | let mut array_23 = object.key("ListOfStrings").start_array();
|
297 + | for item_24 in var_22 {
|
298 + | {
|
299 + | array_23.value().string(item_24.as_str());
|
300 + | }
|
301 + | }
|
302 + | array_23.finish();
|
303 + | }
|
304 + | if let Some(var_25) = &input.list_of_structs {
|
305 + | let mut array_26 = object.key("ListOfStructs").start_array();
|
306 + | for item_27 in var_25 {
|
307 + | {
|
308 + | #[allow(unused_mut)]
|
309 + | let mut object_28 = array_26.value().start_object();
|
310 + | crate::protocol_serde::shape_simple_struct::ser_simple_struct(
|
311 + | &mut object_28,
|
312 + | item_27,
|
313 + | )?;
|
314 + | object_28.finish();
|
315 + | }
|
316 + | }
|
317 + | array_26.finish();
|
318 + | }
|
319 + | if let Some(var_29) = &input.long {
|
320 + | object.key("Long").number(
|
321 + | #[allow(clippy::useless_conversion)]
|
322 + | ::aws_smithy_types::Number::NegInt((*var_29).into()),
|
323 + | );
|
324 + | }
|
325 + | if let Some(var_30) = &input.map_of_lists_of_strings {
|
326 + | #[allow(unused_mut)]
|
327 + | let mut object_31 = object.key("MapOfListsOfStrings").start_object();
|
328 + | for (key_32, value_33) in var_30 {
|
329 + | {
|
330 + | let mut array_34 = object_31.key(key_32.as_str()).start_array();
|
331 + | for item_35 in value_33 {
|
332 + | {
|
333 + | array_34.value().string(item_35.as_str());
|
334 + | }
|
335 + | }
|
336 + | array_34.finish();
|
337 + | }
|
338 + | }
|
339 + | object_31.finish();
|
340 + | }
|
341 + | if let Some(var_36) = &input.map_of_maps {
|
342 + | #[allow(unused_mut)]
|
343 + | let mut object_37 = object.key("MapOfMaps").start_object();
|
344 + | for (key_38, value_39) in var_36 {
|
345 + | {
|
346 + | #[allow(unused_mut)]
|
347 + | let mut object_40 = object_37.key(key_38.as_str()).start_object();
|
348 + | for (key_41, value_42) in value_39 {
|
349 + | {
|
350 + | object_40.key(key_41.as_str()).string(value_42.as_str());
|
351 + | }
|
352 + | }
|
353 + | object_40.finish();
|
354 + | }
|
355 + | }
|
356 + | object_37.finish();
|
357 + | }
|
358 + | if let Some(var_43) = &input.map_of_strings {
|
359 + | #[allow(unused_mut)]
|
360 + | let mut object_44 = object.key("MapOfStrings").start_object();
|
361 + | for (key_45, value_46) in var_43 {
|
362 + | {
|
363 + | object_44.key(key_45.as_str()).string(value_46.as_str());
|
364 + | }
|
365 + | }
|
366 + | object_44.finish();
|
367 + | }
|
368 + | if let Some(var_47) = &input.map_of_structs {
|
369 + | #[allow(unused_mut)]
|
370 + | let mut object_48 = object.key("MapOfStructs").start_object();
|
371 + | for (key_49, value_50) in var_47 {
|
372 + | {
|
373 + | #[allow(unused_mut)]
|
374 + | let mut object_51 = object_48.key(key_49.as_str()).start_object();
|
375 + | crate::protocol_serde::shape_simple_struct::ser_simple_struct(
|
376 + | &mut object_51,
|
377 + | value_50,
|
378 + | )?;
|
379 + | object_51.finish();
|
380 + | }
|
381 + | }
|
382 + | object_48.finish();
|
383 + | }
|
384 + | if let Some(var_52) = &input.recursive_list {
|
385 + | let mut array_53 = object.key("RecursiveList").start_array();
|
386 + | for item_54 in var_52 {
|
387 + | {
|
388 + | #[allow(unused_mut)]
|
389 + | let mut object_55 = array_53.value().start_object();
|
390 + | crate::protocol_serde::shape_kitchen_sink::ser_kitchen_sink(
|
391 + | &mut object_55,
|
392 + | item_54,
|
393 + | )?;
|
394 + | object_55.finish();
|
395 + | }
|
396 + | }
|
397 + | array_53.finish();
|
398 + | }
|
399 + | if let Some(var_56) = &input.recursive_map {
|
400 + | #[allow(unused_mut)]
|
401 + | let mut object_57 = object.key("RecursiveMap").start_object();
|
402 + | for (key_58, value_59) in var_56 {
|
403 + | {
|
404 + | #[allow(unused_mut)]
|
405 + | let mut object_60 = object_57.key(key_58.as_str()).start_object();
|
406 + | crate::protocol_serde::shape_kitchen_sink::ser_kitchen_sink(
|
407 + | &mut object_60,
|
408 + | value_59,
|
409 + | )?;
|
410 + | object_60.finish();
|
411 + | }
|
412 + | }
|
413 + | object_57.finish();
|
414 + | }
|
415 + | if let Some(var_61) = &input.recursive_struct {
|
416 + | #[allow(unused_mut)]
|
417 + | let mut object_62 = object.key("RecursiveStruct").start_object();
|
418 + | crate::protocol_serde::shape_kitchen_sink::ser_kitchen_sink(&mut object_62, var_61)?;
|
419 + | object_62.finish();
|
420 + | }
|
421 + | if let Some(var_63) = &input.simple_struct {
|
422 + | #[allow(unused_mut)]
|
423 + | let mut object_64 = object.key("SimpleStruct").start_object();
|
424 + | crate::protocol_serde::shape_simple_struct::ser_simple_struct(&mut object_64, var_63)?;
|
425 + | object_64.finish();
|
426 + | }
|
427 + | if let Some(var_65) = &input.string {
|
428 + | object.key("String").string(var_65.as_str());
|
429 + | }
|
430 + | if let Some(var_66) = &input.struct_with_json_name {
|
431 + | #[allow(unused_mut)]
|
432 + | let mut object_67 = object.key("StructWithJsonName").start_object();
|
433 + | crate::protocol_serde::shape_struct_with_json_name::ser_struct_with_json_name(
|
434 + | &mut object_67,
|
435 + | var_66,
|
436 + | )?;
|
437 + | object_67.finish();
|
438 + | }
|
439 + | if let Some(var_68) = &input.timestamp {
|
440 + | object
|
441 + | .key("Timestamp")
|
442 + | .date_time(var_68, ::aws_smithy_types::date_time::Format::EpochSeconds)?;
|
443 + | }
|
444 + | if let Some(var_69) = &input.unix_timestamp {
|
445 + | object
|
446 + | .key("UnixTimestamp")
|
447 + | .date_time(var_69, ::aws_smithy_types::date_time::Format::EpochSeconds)?;
|
448 + | }
|
449 + | Ok(())
|
450 + | }
|