aws_sdk_redshift/protocol_serde/
shape_create_integration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(clippy::unnecessary_wraps)]
3pub fn de_create_integration_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_integration::CreateIntegrationOutput, crate::operation::create_integration::CreateIntegrationError>
8{
9    #[allow(unused_mut)]
10    let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
11        .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
12    generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
13    let generic = generic_builder.build();
14    let error_code = match generic.code() {
15        Some(code) => code,
16        None => return Err(crate::operation::create_integration::CreateIntegrationError::unhandled(generic)),
17    };
18
19    let _error_message = generic.message().map(|msg| msg.to_owned());
20    Err(match error_code {
21        "IntegrationAlreadyExistsFault" => crate::operation::create_integration::CreateIntegrationError::IntegrationAlreadyExistsFault({
22            #[allow(unused_mut)]
23            let mut tmp = {
24                #[allow(unused_mut)]
25                let mut output = crate::types::error::builders::IntegrationAlreadyExistsFaultBuilder::default();
26                output = crate::protocol_serde::shape_integration_already_exists_fault::de_integration_already_exists_fault_xml_err(
27                    _response_body,
28                    output,
29                )
30                .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
31                let output = output.meta(generic);
32                output.build()
33            };
34            if tmp.message.is_none() {
35                tmp.message = _error_message;
36            }
37            tmp
38        }),
39        "IntegrationConflictOperationFault" => crate::operation::create_integration::CreateIntegrationError::IntegrationConflictOperationFault({
40            #[allow(unused_mut)]
41            let mut tmp = {
42                #[allow(unused_mut)]
43                let mut output = crate::types::error::builders::IntegrationConflictOperationFaultBuilder::default();
44                output = crate::protocol_serde::shape_integration_conflict_operation_fault::de_integration_conflict_operation_fault_xml_err(
45                    _response_body,
46                    output,
47                )
48                .map_err(crate::operation::create_integration::CreateIntegrationError::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        "IntegrationQuotaExceededFault" => crate::operation::create_integration::CreateIntegrationError::IntegrationQuotaExceededFault({
58            #[allow(unused_mut)]
59            let mut tmp = {
60                #[allow(unused_mut)]
61                let mut output = crate::types::error::builders::IntegrationQuotaExceededFaultBuilder::default();
62                output = crate::protocol_serde::shape_integration_quota_exceeded_fault::de_integration_quota_exceeded_fault_xml_err(
63                    _response_body,
64                    output,
65                )
66                .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
67                let output = output.meta(generic);
68                output.build()
69            };
70            if tmp.message.is_none() {
71                tmp.message = _error_message;
72            }
73            tmp
74        }),
75        "IntegrationSourceNotFoundFault" => crate::operation::create_integration::CreateIntegrationError::IntegrationSourceNotFoundFault({
76            #[allow(unused_mut)]
77            let mut tmp = {
78                #[allow(unused_mut)]
79                let mut output = crate::types::error::builders::IntegrationSourceNotFoundFaultBuilder::default();
80                output = crate::protocol_serde::shape_integration_source_not_found_fault::de_integration_source_not_found_fault_xml_err(
81                    _response_body,
82                    output,
83                )
84                .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
85                let output = output.meta(generic);
86                output.build()
87            };
88            if tmp.message.is_none() {
89                tmp.message = _error_message;
90            }
91            tmp
92        }),
93        "IntegrationTargetNotFoundFault" => crate::operation::create_integration::CreateIntegrationError::IntegrationTargetNotFoundFault({
94            #[allow(unused_mut)]
95            let mut tmp = {
96                #[allow(unused_mut)]
97                let mut output = crate::types::error::builders::IntegrationTargetNotFoundFaultBuilder::default();
98                output = crate::protocol_serde::shape_integration_target_not_found_fault::de_integration_target_not_found_fault_xml_err(
99                    _response_body,
100                    output,
101                )
102                .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
103                let output = output.meta(generic);
104                output.build()
105            };
106            if tmp.message.is_none() {
107                tmp.message = _error_message;
108            }
109            tmp
110        }),
111        "InvalidClusterState" => crate::operation::create_integration::CreateIntegrationError::InvalidClusterStateFault({
112            #[allow(unused_mut)]
113            let mut tmp = {
114                #[allow(unused_mut)]
115                let mut output = crate::types::error::builders::InvalidClusterStateFaultBuilder::default();
116                output = crate::protocol_serde::shape_invalid_cluster_state_fault::de_invalid_cluster_state_fault_xml_err(_response_body, output)
117                    .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
118                let output = output.meta(generic);
119                output.build()
120            };
121            if tmp.message.is_none() {
122                tmp.message = _error_message;
123            }
124            tmp
125        }),
126        "InvalidTagFault" => crate::operation::create_integration::CreateIntegrationError::InvalidTagFault({
127            #[allow(unused_mut)]
128            let mut tmp = {
129                #[allow(unused_mut)]
130                let mut output = crate::types::error::builders::InvalidTagFaultBuilder::default();
131                output = crate::protocol_serde::shape_invalid_tag_fault::de_invalid_tag_fault_xml_err(_response_body, output)
132                    .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
133                let output = output.meta(generic);
134                output.build()
135            };
136            if tmp.message.is_none() {
137                tmp.message = _error_message;
138            }
139            tmp
140        }),
141        "TagLimitExceededFault" => crate::operation::create_integration::CreateIntegrationError::TagLimitExceededFault({
142            #[allow(unused_mut)]
143            let mut tmp = {
144                #[allow(unused_mut)]
145                let mut output = crate::types::error::builders::TagLimitExceededFaultBuilder::default();
146                output = crate::protocol_serde::shape_tag_limit_exceeded_fault::de_tag_limit_exceeded_fault_xml_err(_response_body, output)
147                    .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
148                let output = output.meta(generic);
149                output.build()
150            };
151            if tmp.message.is_none() {
152                tmp.message = _error_message;
153            }
154            tmp
155        }),
156        "UnsupportedOperation" => crate::operation::create_integration::CreateIntegrationError::UnsupportedOperationFault({
157            #[allow(unused_mut)]
158            let mut tmp = {
159                #[allow(unused_mut)]
160                let mut output = crate::types::error::builders::UnsupportedOperationFaultBuilder::default();
161                output = crate::protocol_serde::shape_unsupported_operation_fault::de_unsupported_operation_fault_xml_err(_response_body, output)
162                    .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
163                let output = output.meta(generic);
164                output.build()
165            };
166            if tmp.message.is_none() {
167                tmp.message = _error_message;
168            }
169            tmp
170        }),
171        _ => crate::operation::create_integration::CreateIntegrationError::generic(generic),
172    })
173}
174
175#[allow(clippy::unnecessary_wraps)]
176pub fn de_create_integration_http_response(
177    _response_status: u16,
178    _response_headers: &::aws_smithy_runtime_api::http::Headers,
179    _response_body: &[u8],
180) -> std::result::Result<crate::operation::create_integration::CreateIntegrationOutput, crate::operation::create_integration::CreateIntegrationError>
181{
182    Ok({
183        #[allow(unused_mut)]
184        let mut output = crate::operation::create_integration::builders::CreateIntegrationOutputBuilder::default();
185        output = crate::protocol_serde::shape_create_integration::de_create_integration(_response_body, output)
186            .map_err(crate::operation::create_integration::CreateIntegrationError::unhandled)?;
187        output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
188        output.build()
189    })
190}
191
192#[allow(unused_mut)]
193pub fn de_create_integration(
194    inp: &[u8],
195    mut builder: crate::operation::create_integration::builders::CreateIntegrationOutputBuilder,
196) -> std::result::Result<crate::operation::create_integration::builders::CreateIntegrationOutputBuilder, ::aws_smithy_xml::decode::XmlDecodeError> {
197    let mut doc = ::aws_smithy_xml::decode::Document::try_from(inp)?;
198
199    #[allow(unused_mut)]
200    let mut decoder = doc.root_element()?;
201    #[allow(unused_variables)]
202    let start_el = decoder.start_el();
203    if !(start_el.matches("CreateIntegrationResponse")) {
204        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
205            "invalid root, expected CreateIntegrationResponse got {:?}",
206            start_el
207        )));
208    }
209    if let Some(mut result_tag) = decoder.next_tag() {
210        let start_el = result_tag.start_el();
211        if !(start_el.matches("CreateIntegrationResult")) {
212            return Err(::aws_smithy_xml::decode::XmlDecodeError::custom(format!(
213                "invalid result, expected CreateIntegrationResult got {:?}",
214                start_el
215            )));
216        }
217        while let Some(mut tag) = result_tag.next_tag() {
218            match tag.start_el() {
219            s if s.matches("IntegrationArn") /* IntegrationArn com.amazonaws.redshift.synthetic#CreateIntegrationOutput$IntegrationArn */ =>  {
220                let var_1 =
221                    Some(
222                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
223                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
224                            .into()
225                        )
226                        ?
227                    )
228                ;
229                builder = builder.set_integration_arn(var_1);
230            }
231            ,
232            s if s.matches("IntegrationName") /* IntegrationName com.amazonaws.redshift.synthetic#CreateIntegrationOutput$IntegrationName */ =>  {
233                let var_2 =
234                    Some(
235                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
236                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
237                            .into()
238                        )
239                        ?
240                    )
241                ;
242                builder = builder.set_integration_name(var_2);
243            }
244            ,
245            s if s.matches("SourceArn") /* SourceArn com.amazonaws.redshift.synthetic#CreateIntegrationOutput$SourceArn */ =>  {
246                let var_3 =
247                    Some(
248                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
249                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
250                            .into()
251                        )
252                        ?
253                    )
254                ;
255                builder = builder.set_source_arn(var_3);
256            }
257            ,
258            s if s.matches("TargetArn") /* TargetArn com.amazonaws.redshift.synthetic#CreateIntegrationOutput$TargetArn */ =>  {
259                let var_4 =
260                    Some(
261                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
262                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
263                            .into()
264                        )
265                        ?
266                    )
267                ;
268                builder = builder.set_target_arn(var_4);
269            }
270            ,
271            s if s.matches("Status") /* Status com.amazonaws.redshift.synthetic#CreateIntegrationOutput$Status */ =>  {
272                let var_5 =
273                    Some(
274                        Result::<crate::types::ZeroEtlIntegrationStatus, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
275                            crate::types::ZeroEtlIntegrationStatus::from(
276                                ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
277                            )
278                        )
279                        ?
280                    )
281                ;
282                builder = builder.set_status(var_5);
283            }
284            ,
285            s if s.matches("Errors") /* Errors com.amazonaws.redshift.synthetic#CreateIntegrationOutput$Errors */ =>  {
286                let var_6 =
287                    Some(
288                        crate::protocol_serde::shape_integration_error_list::de_integration_error_list(&mut tag)
289                        ?
290                    )
291                ;
292                builder = builder.set_errors(var_6);
293            }
294            ,
295            s if s.matches("CreateTime") /* CreateTime com.amazonaws.redshift.synthetic#CreateIntegrationOutput$CreateTime */ =>  {
296                let var_7 =
297                    Some(
298                        ::aws_smithy_types::DateTime::from_str(
299                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
300                            , ::aws_smithy_types::date_time::Format::DateTimeWithOffset
301                        )
302                        .map_err(|_|::aws_smithy_xml::decode::XmlDecodeError::custom("expected (timestamp: `com.amazonaws.redshift#TStamp`)"))
303                        ?
304                    )
305                ;
306                builder = builder.set_create_time(var_7);
307            }
308            ,
309            s if s.matches("Description") /* Description com.amazonaws.redshift.synthetic#CreateIntegrationOutput$Description */ =>  {
310                let var_8 =
311                    Some(
312                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
313                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
314                            .into()
315                        )
316                        ?
317                    )
318                ;
319                builder = builder.set_description(var_8);
320            }
321            ,
322            s if s.matches("KMSKeyId") /* KMSKeyId com.amazonaws.redshift.synthetic#CreateIntegrationOutput$KMSKeyId */ =>  {
323                let var_9 =
324                    Some(
325                        Result::<::std::string::String, ::aws_smithy_xml::decode::XmlDecodeError>::Ok(
326                            ::aws_smithy_xml::decode::try_data(&mut tag)?.as_ref()
327                            .into()
328                        )
329                        ?
330                    )
331                ;
332                builder = builder.set_kms_key_id(var_9);
333            }
334            ,
335            s if s.matches("AdditionalEncryptionContext") /* AdditionalEncryptionContext com.amazonaws.redshift.synthetic#CreateIntegrationOutput$AdditionalEncryptionContext */ =>  {
336                let var_10 =
337                    Some(
338                        crate::protocol_serde::shape_encryption_context_map::de_encryption_context_map(&mut tag)
339                        ?
340                    )
341                ;
342                builder = builder.set_additional_encryption_context(var_10);
343            }
344            ,
345            s if s.matches("Tags") /* Tags com.amazonaws.redshift.synthetic#CreateIntegrationOutput$Tags */ =>  {
346                let var_11 =
347                    Some(
348                        crate::protocol_serde::shape_tag_list::de_tag_list(&mut tag)
349                        ?
350                    )
351                ;
352                builder = builder.set_tags(var_11);
353            }
354            ,
355            _ => {}
356        }
357        }
358    } else {
359        return Err(::aws_smithy_xml::decode::XmlDecodeError::custom("expected CreateIntegrationResult tag"));
360    };
361    Ok(builder)
362}