1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package iotsecuretunneling
4
5import (
6	"bytes"
7	"context"
8	"encoding/json"
9	"fmt"
10	"github.com/aws/aws-sdk-go-v2/aws/protocol/restjson"
11	"github.com/aws/aws-sdk-go-v2/service/iotsecuretunneling/types"
12	smithy "github.com/aws/smithy-go"
13	smithyio "github.com/aws/smithy-go/io"
14	"github.com/aws/smithy-go/middleware"
15	"github.com/aws/smithy-go/ptr"
16	smithytime "github.com/aws/smithy-go/time"
17	smithyhttp "github.com/aws/smithy-go/transport/http"
18	"io"
19	"strings"
20)
21
22type awsAwsjson11_deserializeOpCloseTunnel struct {
23}
24
25func (*awsAwsjson11_deserializeOpCloseTunnel) ID() string {
26	return "OperationDeserializer"
27}
28
29func (m *awsAwsjson11_deserializeOpCloseTunnel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
30	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
31) {
32	out, metadata, err = next.HandleDeserialize(ctx, in)
33	if err != nil {
34		return out, metadata, err
35	}
36
37	response, ok := out.RawResponse.(*smithyhttp.Response)
38	if !ok {
39		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
40	}
41
42	if response.StatusCode < 200 || response.StatusCode >= 300 {
43		return out, metadata, awsAwsjson11_deserializeOpErrorCloseTunnel(response, &metadata)
44	}
45	output := &CloseTunnelOutput{}
46	out.Result = output
47
48	var buff [1024]byte
49	ringBuffer := smithyio.NewRingBuffer(buff[:])
50
51	body := io.TeeReader(response.Body, ringBuffer)
52	decoder := json.NewDecoder(body)
53	decoder.UseNumber()
54	var shape interface{}
55	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
56		var snapshot bytes.Buffer
57		io.Copy(&snapshot, ringBuffer)
58		err = &smithy.DeserializationError{
59			Err:      fmt.Errorf("failed to decode response body, %w", err),
60			Snapshot: snapshot.Bytes(),
61		}
62		return out, metadata, err
63	}
64
65	err = awsAwsjson11_deserializeOpDocumentCloseTunnelOutput(&output, shape)
66	if err != nil {
67		var snapshot bytes.Buffer
68		io.Copy(&snapshot, ringBuffer)
69		err = &smithy.DeserializationError{
70			Err:      fmt.Errorf("failed to decode response body, %w", err),
71			Snapshot: snapshot.Bytes(),
72		}
73		return out, metadata, err
74	}
75
76	return out, metadata, err
77}
78
79func awsAwsjson11_deserializeOpErrorCloseTunnel(response *smithyhttp.Response, metadata *middleware.Metadata) error {
80	var errorBuffer bytes.Buffer
81	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
82		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
83	}
84	errorBody := bytes.NewReader(errorBuffer.Bytes())
85
86	errorCode := "UnknownError"
87	errorMessage := errorCode
88
89	code := response.Header.Get("X-Amzn-ErrorType")
90	if len(code) != 0 {
91		errorCode = restjson.SanitizeErrorCode(code)
92	}
93
94	var buff [1024]byte
95	ringBuffer := smithyio.NewRingBuffer(buff[:])
96
97	body := io.TeeReader(errorBody, ringBuffer)
98	decoder := json.NewDecoder(body)
99	decoder.UseNumber()
100	code, message, err := restjson.GetErrorInfo(decoder)
101	if err != nil {
102		var snapshot bytes.Buffer
103		io.Copy(&snapshot, ringBuffer)
104		err = &smithy.DeserializationError{
105			Err:      fmt.Errorf("failed to decode response body, %w", err),
106			Snapshot: snapshot.Bytes(),
107		}
108		return err
109	}
110
111	errorBody.Seek(0, io.SeekStart)
112	if len(code) != 0 {
113		errorCode = restjson.SanitizeErrorCode(code)
114	}
115	if len(message) != 0 {
116		errorMessage = message
117	}
118
119	switch {
120	case strings.EqualFold("ResourceNotFoundException", errorCode):
121		return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody)
122
123	default:
124		genericError := &smithy.GenericAPIError{
125			Code:    errorCode,
126			Message: errorMessage,
127		}
128		return genericError
129
130	}
131}
132
133type awsAwsjson11_deserializeOpDescribeTunnel struct {
134}
135
136func (*awsAwsjson11_deserializeOpDescribeTunnel) ID() string {
137	return "OperationDeserializer"
138}
139
140func (m *awsAwsjson11_deserializeOpDescribeTunnel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
141	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
142) {
143	out, metadata, err = next.HandleDeserialize(ctx, in)
144	if err != nil {
145		return out, metadata, err
146	}
147
148	response, ok := out.RawResponse.(*smithyhttp.Response)
149	if !ok {
150		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
151	}
152
153	if response.StatusCode < 200 || response.StatusCode >= 300 {
154		return out, metadata, awsAwsjson11_deserializeOpErrorDescribeTunnel(response, &metadata)
155	}
156	output := &DescribeTunnelOutput{}
157	out.Result = output
158
159	var buff [1024]byte
160	ringBuffer := smithyio.NewRingBuffer(buff[:])
161
162	body := io.TeeReader(response.Body, ringBuffer)
163	decoder := json.NewDecoder(body)
164	decoder.UseNumber()
165	var shape interface{}
166	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
167		var snapshot bytes.Buffer
168		io.Copy(&snapshot, ringBuffer)
169		err = &smithy.DeserializationError{
170			Err:      fmt.Errorf("failed to decode response body, %w", err),
171			Snapshot: snapshot.Bytes(),
172		}
173		return out, metadata, err
174	}
175
176	err = awsAwsjson11_deserializeOpDocumentDescribeTunnelOutput(&output, shape)
177	if err != nil {
178		var snapshot bytes.Buffer
179		io.Copy(&snapshot, ringBuffer)
180		err = &smithy.DeserializationError{
181			Err:      fmt.Errorf("failed to decode response body, %w", err),
182			Snapshot: snapshot.Bytes(),
183		}
184		return out, metadata, err
185	}
186
187	return out, metadata, err
188}
189
190func awsAwsjson11_deserializeOpErrorDescribeTunnel(response *smithyhttp.Response, metadata *middleware.Metadata) error {
191	var errorBuffer bytes.Buffer
192	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
193		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
194	}
195	errorBody := bytes.NewReader(errorBuffer.Bytes())
196
197	errorCode := "UnknownError"
198	errorMessage := errorCode
199
200	code := response.Header.Get("X-Amzn-ErrorType")
201	if len(code) != 0 {
202		errorCode = restjson.SanitizeErrorCode(code)
203	}
204
205	var buff [1024]byte
206	ringBuffer := smithyio.NewRingBuffer(buff[:])
207
208	body := io.TeeReader(errorBody, ringBuffer)
209	decoder := json.NewDecoder(body)
210	decoder.UseNumber()
211	code, message, err := restjson.GetErrorInfo(decoder)
212	if err != nil {
213		var snapshot bytes.Buffer
214		io.Copy(&snapshot, ringBuffer)
215		err = &smithy.DeserializationError{
216			Err:      fmt.Errorf("failed to decode response body, %w", err),
217			Snapshot: snapshot.Bytes(),
218		}
219		return err
220	}
221
222	errorBody.Seek(0, io.SeekStart)
223	if len(code) != 0 {
224		errorCode = restjson.SanitizeErrorCode(code)
225	}
226	if len(message) != 0 {
227		errorMessage = message
228	}
229
230	switch {
231	case strings.EqualFold("ResourceNotFoundException", errorCode):
232		return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody)
233
234	default:
235		genericError := &smithy.GenericAPIError{
236			Code:    errorCode,
237			Message: errorMessage,
238		}
239		return genericError
240
241	}
242}
243
244type awsAwsjson11_deserializeOpListTagsForResource struct {
245}
246
247func (*awsAwsjson11_deserializeOpListTagsForResource) ID() string {
248	return "OperationDeserializer"
249}
250
251func (m *awsAwsjson11_deserializeOpListTagsForResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
252	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
253) {
254	out, metadata, err = next.HandleDeserialize(ctx, in)
255	if err != nil {
256		return out, metadata, err
257	}
258
259	response, ok := out.RawResponse.(*smithyhttp.Response)
260	if !ok {
261		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
262	}
263
264	if response.StatusCode < 200 || response.StatusCode >= 300 {
265		return out, metadata, awsAwsjson11_deserializeOpErrorListTagsForResource(response, &metadata)
266	}
267	output := &ListTagsForResourceOutput{}
268	out.Result = output
269
270	var buff [1024]byte
271	ringBuffer := smithyio.NewRingBuffer(buff[:])
272
273	body := io.TeeReader(response.Body, ringBuffer)
274	decoder := json.NewDecoder(body)
275	decoder.UseNumber()
276	var shape interface{}
277	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
278		var snapshot bytes.Buffer
279		io.Copy(&snapshot, ringBuffer)
280		err = &smithy.DeserializationError{
281			Err:      fmt.Errorf("failed to decode response body, %w", err),
282			Snapshot: snapshot.Bytes(),
283		}
284		return out, metadata, err
285	}
286
287	err = awsAwsjson11_deserializeOpDocumentListTagsForResourceOutput(&output, shape)
288	if err != nil {
289		var snapshot bytes.Buffer
290		io.Copy(&snapshot, ringBuffer)
291		err = &smithy.DeserializationError{
292			Err:      fmt.Errorf("failed to decode response body, %w", err),
293			Snapshot: snapshot.Bytes(),
294		}
295		return out, metadata, err
296	}
297
298	return out, metadata, err
299}
300
301func awsAwsjson11_deserializeOpErrorListTagsForResource(response *smithyhttp.Response, metadata *middleware.Metadata) error {
302	var errorBuffer bytes.Buffer
303	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
304		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
305	}
306	errorBody := bytes.NewReader(errorBuffer.Bytes())
307
308	errorCode := "UnknownError"
309	errorMessage := errorCode
310
311	code := response.Header.Get("X-Amzn-ErrorType")
312	if len(code) != 0 {
313		errorCode = restjson.SanitizeErrorCode(code)
314	}
315
316	var buff [1024]byte
317	ringBuffer := smithyio.NewRingBuffer(buff[:])
318
319	body := io.TeeReader(errorBody, ringBuffer)
320	decoder := json.NewDecoder(body)
321	decoder.UseNumber()
322	code, message, err := restjson.GetErrorInfo(decoder)
323	if err != nil {
324		var snapshot bytes.Buffer
325		io.Copy(&snapshot, ringBuffer)
326		err = &smithy.DeserializationError{
327			Err:      fmt.Errorf("failed to decode response body, %w", err),
328			Snapshot: snapshot.Bytes(),
329		}
330		return err
331	}
332
333	errorBody.Seek(0, io.SeekStart)
334	if len(code) != 0 {
335		errorCode = restjson.SanitizeErrorCode(code)
336	}
337	if len(message) != 0 {
338		errorMessage = message
339	}
340
341	switch {
342	case strings.EqualFold("ResourceNotFoundException", errorCode):
343		return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody)
344
345	default:
346		genericError := &smithy.GenericAPIError{
347			Code:    errorCode,
348			Message: errorMessage,
349		}
350		return genericError
351
352	}
353}
354
355type awsAwsjson11_deserializeOpListTunnels struct {
356}
357
358func (*awsAwsjson11_deserializeOpListTunnels) ID() string {
359	return "OperationDeserializer"
360}
361
362func (m *awsAwsjson11_deserializeOpListTunnels) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
363	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
364) {
365	out, metadata, err = next.HandleDeserialize(ctx, in)
366	if err != nil {
367		return out, metadata, err
368	}
369
370	response, ok := out.RawResponse.(*smithyhttp.Response)
371	if !ok {
372		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
373	}
374
375	if response.StatusCode < 200 || response.StatusCode >= 300 {
376		return out, metadata, awsAwsjson11_deserializeOpErrorListTunnels(response, &metadata)
377	}
378	output := &ListTunnelsOutput{}
379	out.Result = output
380
381	var buff [1024]byte
382	ringBuffer := smithyio.NewRingBuffer(buff[:])
383
384	body := io.TeeReader(response.Body, ringBuffer)
385	decoder := json.NewDecoder(body)
386	decoder.UseNumber()
387	var shape interface{}
388	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
389		var snapshot bytes.Buffer
390		io.Copy(&snapshot, ringBuffer)
391		err = &smithy.DeserializationError{
392			Err:      fmt.Errorf("failed to decode response body, %w", err),
393			Snapshot: snapshot.Bytes(),
394		}
395		return out, metadata, err
396	}
397
398	err = awsAwsjson11_deserializeOpDocumentListTunnelsOutput(&output, shape)
399	if err != nil {
400		var snapshot bytes.Buffer
401		io.Copy(&snapshot, ringBuffer)
402		err = &smithy.DeserializationError{
403			Err:      fmt.Errorf("failed to decode response body, %w", err),
404			Snapshot: snapshot.Bytes(),
405		}
406		return out, metadata, err
407	}
408
409	return out, metadata, err
410}
411
412func awsAwsjson11_deserializeOpErrorListTunnels(response *smithyhttp.Response, metadata *middleware.Metadata) error {
413	var errorBuffer bytes.Buffer
414	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
415		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
416	}
417	errorBody := bytes.NewReader(errorBuffer.Bytes())
418
419	errorCode := "UnknownError"
420	errorMessage := errorCode
421
422	code := response.Header.Get("X-Amzn-ErrorType")
423	if len(code) != 0 {
424		errorCode = restjson.SanitizeErrorCode(code)
425	}
426
427	var buff [1024]byte
428	ringBuffer := smithyio.NewRingBuffer(buff[:])
429
430	body := io.TeeReader(errorBody, ringBuffer)
431	decoder := json.NewDecoder(body)
432	decoder.UseNumber()
433	code, message, err := restjson.GetErrorInfo(decoder)
434	if err != nil {
435		var snapshot bytes.Buffer
436		io.Copy(&snapshot, ringBuffer)
437		err = &smithy.DeserializationError{
438			Err:      fmt.Errorf("failed to decode response body, %w", err),
439			Snapshot: snapshot.Bytes(),
440		}
441		return err
442	}
443
444	errorBody.Seek(0, io.SeekStart)
445	if len(code) != 0 {
446		errorCode = restjson.SanitizeErrorCode(code)
447	}
448	if len(message) != 0 {
449		errorMessage = message
450	}
451
452	switch {
453	default:
454		genericError := &smithy.GenericAPIError{
455			Code:    errorCode,
456			Message: errorMessage,
457		}
458		return genericError
459
460	}
461}
462
463type awsAwsjson11_deserializeOpOpenTunnel struct {
464}
465
466func (*awsAwsjson11_deserializeOpOpenTunnel) ID() string {
467	return "OperationDeserializer"
468}
469
470func (m *awsAwsjson11_deserializeOpOpenTunnel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
471	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
472) {
473	out, metadata, err = next.HandleDeserialize(ctx, in)
474	if err != nil {
475		return out, metadata, err
476	}
477
478	response, ok := out.RawResponse.(*smithyhttp.Response)
479	if !ok {
480		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
481	}
482
483	if response.StatusCode < 200 || response.StatusCode >= 300 {
484		return out, metadata, awsAwsjson11_deserializeOpErrorOpenTunnel(response, &metadata)
485	}
486	output := &OpenTunnelOutput{}
487	out.Result = output
488
489	var buff [1024]byte
490	ringBuffer := smithyio.NewRingBuffer(buff[:])
491
492	body := io.TeeReader(response.Body, ringBuffer)
493	decoder := json.NewDecoder(body)
494	decoder.UseNumber()
495	var shape interface{}
496	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
497		var snapshot bytes.Buffer
498		io.Copy(&snapshot, ringBuffer)
499		err = &smithy.DeserializationError{
500			Err:      fmt.Errorf("failed to decode response body, %w", err),
501			Snapshot: snapshot.Bytes(),
502		}
503		return out, metadata, err
504	}
505
506	err = awsAwsjson11_deserializeOpDocumentOpenTunnelOutput(&output, shape)
507	if err != nil {
508		var snapshot bytes.Buffer
509		io.Copy(&snapshot, ringBuffer)
510		err = &smithy.DeserializationError{
511			Err:      fmt.Errorf("failed to decode response body, %w", err),
512			Snapshot: snapshot.Bytes(),
513		}
514		return out, metadata, err
515	}
516
517	return out, metadata, err
518}
519
520func awsAwsjson11_deserializeOpErrorOpenTunnel(response *smithyhttp.Response, metadata *middleware.Metadata) error {
521	var errorBuffer bytes.Buffer
522	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
523		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
524	}
525	errorBody := bytes.NewReader(errorBuffer.Bytes())
526
527	errorCode := "UnknownError"
528	errorMessage := errorCode
529
530	code := response.Header.Get("X-Amzn-ErrorType")
531	if len(code) != 0 {
532		errorCode = restjson.SanitizeErrorCode(code)
533	}
534
535	var buff [1024]byte
536	ringBuffer := smithyio.NewRingBuffer(buff[:])
537
538	body := io.TeeReader(errorBody, ringBuffer)
539	decoder := json.NewDecoder(body)
540	decoder.UseNumber()
541	code, message, err := restjson.GetErrorInfo(decoder)
542	if err != nil {
543		var snapshot bytes.Buffer
544		io.Copy(&snapshot, ringBuffer)
545		err = &smithy.DeserializationError{
546			Err:      fmt.Errorf("failed to decode response body, %w", err),
547			Snapshot: snapshot.Bytes(),
548		}
549		return err
550	}
551
552	errorBody.Seek(0, io.SeekStart)
553	if len(code) != 0 {
554		errorCode = restjson.SanitizeErrorCode(code)
555	}
556	if len(message) != 0 {
557		errorMessage = message
558	}
559
560	switch {
561	case strings.EqualFold("LimitExceededException", errorCode):
562		return awsAwsjson11_deserializeErrorLimitExceededException(response, errorBody)
563
564	default:
565		genericError := &smithy.GenericAPIError{
566			Code:    errorCode,
567			Message: errorMessage,
568		}
569		return genericError
570
571	}
572}
573
574type awsAwsjson11_deserializeOpTagResource struct {
575}
576
577func (*awsAwsjson11_deserializeOpTagResource) ID() string {
578	return "OperationDeserializer"
579}
580
581func (m *awsAwsjson11_deserializeOpTagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
582	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
583) {
584	out, metadata, err = next.HandleDeserialize(ctx, in)
585	if err != nil {
586		return out, metadata, err
587	}
588
589	response, ok := out.RawResponse.(*smithyhttp.Response)
590	if !ok {
591		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
592	}
593
594	if response.StatusCode < 200 || response.StatusCode >= 300 {
595		return out, metadata, awsAwsjson11_deserializeOpErrorTagResource(response, &metadata)
596	}
597	output := &TagResourceOutput{}
598	out.Result = output
599
600	var buff [1024]byte
601	ringBuffer := smithyio.NewRingBuffer(buff[:])
602
603	body := io.TeeReader(response.Body, ringBuffer)
604	decoder := json.NewDecoder(body)
605	decoder.UseNumber()
606	var shape interface{}
607	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
608		var snapshot bytes.Buffer
609		io.Copy(&snapshot, ringBuffer)
610		err = &smithy.DeserializationError{
611			Err:      fmt.Errorf("failed to decode response body, %w", err),
612			Snapshot: snapshot.Bytes(),
613		}
614		return out, metadata, err
615	}
616
617	err = awsAwsjson11_deserializeOpDocumentTagResourceOutput(&output, shape)
618	if err != nil {
619		var snapshot bytes.Buffer
620		io.Copy(&snapshot, ringBuffer)
621		err = &smithy.DeserializationError{
622			Err:      fmt.Errorf("failed to decode response body, %w", err),
623			Snapshot: snapshot.Bytes(),
624		}
625		return out, metadata, err
626	}
627
628	return out, metadata, err
629}
630
631func awsAwsjson11_deserializeOpErrorTagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error {
632	var errorBuffer bytes.Buffer
633	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
634		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
635	}
636	errorBody := bytes.NewReader(errorBuffer.Bytes())
637
638	errorCode := "UnknownError"
639	errorMessage := errorCode
640
641	code := response.Header.Get("X-Amzn-ErrorType")
642	if len(code) != 0 {
643		errorCode = restjson.SanitizeErrorCode(code)
644	}
645
646	var buff [1024]byte
647	ringBuffer := smithyio.NewRingBuffer(buff[:])
648
649	body := io.TeeReader(errorBody, ringBuffer)
650	decoder := json.NewDecoder(body)
651	decoder.UseNumber()
652	code, message, err := restjson.GetErrorInfo(decoder)
653	if err != nil {
654		var snapshot bytes.Buffer
655		io.Copy(&snapshot, ringBuffer)
656		err = &smithy.DeserializationError{
657			Err:      fmt.Errorf("failed to decode response body, %w", err),
658			Snapshot: snapshot.Bytes(),
659		}
660		return err
661	}
662
663	errorBody.Seek(0, io.SeekStart)
664	if len(code) != 0 {
665		errorCode = restjson.SanitizeErrorCode(code)
666	}
667	if len(message) != 0 {
668		errorMessage = message
669	}
670
671	switch {
672	case strings.EqualFold("ResourceNotFoundException", errorCode):
673		return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody)
674
675	default:
676		genericError := &smithy.GenericAPIError{
677			Code:    errorCode,
678			Message: errorMessage,
679		}
680		return genericError
681
682	}
683}
684
685type awsAwsjson11_deserializeOpUntagResource struct {
686}
687
688func (*awsAwsjson11_deserializeOpUntagResource) ID() string {
689	return "OperationDeserializer"
690}
691
692func (m *awsAwsjson11_deserializeOpUntagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
693	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
694) {
695	out, metadata, err = next.HandleDeserialize(ctx, in)
696	if err != nil {
697		return out, metadata, err
698	}
699
700	response, ok := out.RawResponse.(*smithyhttp.Response)
701	if !ok {
702		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
703	}
704
705	if response.StatusCode < 200 || response.StatusCode >= 300 {
706		return out, metadata, awsAwsjson11_deserializeOpErrorUntagResource(response, &metadata)
707	}
708	output := &UntagResourceOutput{}
709	out.Result = output
710
711	var buff [1024]byte
712	ringBuffer := smithyio.NewRingBuffer(buff[:])
713
714	body := io.TeeReader(response.Body, ringBuffer)
715	decoder := json.NewDecoder(body)
716	decoder.UseNumber()
717	var shape interface{}
718	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
719		var snapshot bytes.Buffer
720		io.Copy(&snapshot, ringBuffer)
721		err = &smithy.DeserializationError{
722			Err:      fmt.Errorf("failed to decode response body, %w", err),
723			Snapshot: snapshot.Bytes(),
724		}
725		return out, metadata, err
726	}
727
728	err = awsAwsjson11_deserializeOpDocumentUntagResourceOutput(&output, shape)
729	if err != nil {
730		var snapshot bytes.Buffer
731		io.Copy(&snapshot, ringBuffer)
732		err = &smithy.DeserializationError{
733			Err:      fmt.Errorf("failed to decode response body, %w", err),
734			Snapshot: snapshot.Bytes(),
735		}
736		return out, metadata, err
737	}
738
739	return out, metadata, err
740}
741
742func awsAwsjson11_deserializeOpErrorUntagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error {
743	var errorBuffer bytes.Buffer
744	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
745		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
746	}
747	errorBody := bytes.NewReader(errorBuffer.Bytes())
748
749	errorCode := "UnknownError"
750	errorMessage := errorCode
751
752	code := response.Header.Get("X-Amzn-ErrorType")
753	if len(code) != 0 {
754		errorCode = restjson.SanitizeErrorCode(code)
755	}
756
757	var buff [1024]byte
758	ringBuffer := smithyio.NewRingBuffer(buff[:])
759
760	body := io.TeeReader(errorBody, ringBuffer)
761	decoder := json.NewDecoder(body)
762	decoder.UseNumber()
763	code, message, err := restjson.GetErrorInfo(decoder)
764	if err != nil {
765		var snapshot bytes.Buffer
766		io.Copy(&snapshot, ringBuffer)
767		err = &smithy.DeserializationError{
768			Err:      fmt.Errorf("failed to decode response body, %w", err),
769			Snapshot: snapshot.Bytes(),
770		}
771		return err
772	}
773
774	errorBody.Seek(0, io.SeekStart)
775	if len(code) != 0 {
776		errorCode = restjson.SanitizeErrorCode(code)
777	}
778	if len(message) != 0 {
779		errorMessage = message
780	}
781
782	switch {
783	case strings.EqualFold("ResourceNotFoundException", errorCode):
784		return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody)
785
786	default:
787		genericError := &smithy.GenericAPIError{
788			Code:    errorCode,
789			Message: errorMessage,
790		}
791		return genericError
792
793	}
794}
795
796func awsAwsjson11_deserializeErrorLimitExceededException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
797	var buff [1024]byte
798	ringBuffer := smithyio.NewRingBuffer(buff[:])
799
800	body := io.TeeReader(errorBody, ringBuffer)
801	decoder := json.NewDecoder(body)
802	decoder.UseNumber()
803	var shape interface{}
804	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
805		var snapshot bytes.Buffer
806		io.Copy(&snapshot, ringBuffer)
807		err = &smithy.DeserializationError{
808			Err:      fmt.Errorf("failed to decode response body, %w", err),
809			Snapshot: snapshot.Bytes(),
810		}
811		return err
812	}
813
814	output := &types.LimitExceededException{}
815	err := awsAwsjson11_deserializeDocumentLimitExceededException(&output, shape)
816
817	if err != nil {
818		var snapshot bytes.Buffer
819		io.Copy(&snapshot, ringBuffer)
820		err = &smithy.DeserializationError{
821			Err:      fmt.Errorf("failed to decode response body, %w", err),
822			Snapshot: snapshot.Bytes(),
823		}
824		return err
825	}
826
827	errorBody.Seek(0, io.SeekStart)
828	return output
829}
830
831func awsAwsjson11_deserializeErrorResourceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
832	var buff [1024]byte
833	ringBuffer := smithyio.NewRingBuffer(buff[:])
834
835	body := io.TeeReader(errorBody, ringBuffer)
836	decoder := json.NewDecoder(body)
837	decoder.UseNumber()
838	var shape interface{}
839	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
840		var snapshot bytes.Buffer
841		io.Copy(&snapshot, ringBuffer)
842		err = &smithy.DeserializationError{
843			Err:      fmt.Errorf("failed to decode response body, %w", err),
844			Snapshot: snapshot.Bytes(),
845		}
846		return err
847	}
848
849	output := &types.ResourceNotFoundException{}
850	err := awsAwsjson11_deserializeDocumentResourceNotFoundException(&output, shape)
851
852	if err != nil {
853		var snapshot bytes.Buffer
854		io.Copy(&snapshot, ringBuffer)
855		err = &smithy.DeserializationError{
856			Err:      fmt.Errorf("failed to decode response body, %w", err),
857			Snapshot: snapshot.Bytes(),
858		}
859		return err
860	}
861
862	errorBody.Seek(0, io.SeekStart)
863	return output
864}
865
866func awsAwsjson11_deserializeDocumentConnectionState(v **types.ConnectionState, value interface{}) error {
867	if v == nil {
868		return fmt.Errorf("unexpected nil of type %T", v)
869	}
870	if value == nil {
871		return nil
872	}
873
874	shape, ok := value.(map[string]interface{})
875	if !ok {
876		return fmt.Errorf("unexpected JSON type %v", value)
877	}
878
879	var sv *types.ConnectionState
880	if *v == nil {
881		sv = &types.ConnectionState{}
882	} else {
883		sv = *v
884	}
885
886	for key, value := range shape {
887		switch key {
888		case "lastUpdatedAt":
889			if value != nil {
890				jtv, ok := value.(json.Number)
891				if !ok {
892					return fmt.Errorf("expected DateType to be json.Number, got %T instead", value)
893				}
894				f64, err := jtv.Float64()
895				if err != nil {
896					return err
897				}
898				sv.LastUpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64))
899			}
900
901		case "status":
902			if value != nil {
903				jtv, ok := value.(string)
904				if !ok {
905					return fmt.Errorf("expected ConnectionStatus to be of type string, got %T instead", value)
906				}
907				sv.Status = types.ConnectionStatus(jtv)
908			}
909
910		default:
911			_, _ = key, value
912
913		}
914	}
915	*v = sv
916	return nil
917}
918
919func awsAwsjson11_deserializeDocumentDestinationConfig(v **types.DestinationConfig, value interface{}) error {
920	if v == nil {
921		return fmt.Errorf("unexpected nil of type %T", v)
922	}
923	if value == nil {
924		return nil
925	}
926
927	shape, ok := value.(map[string]interface{})
928	if !ok {
929		return fmt.Errorf("unexpected JSON type %v", value)
930	}
931
932	var sv *types.DestinationConfig
933	if *v == nil {
934		sv = &types.DestinationConfig{}
935	} else {
936		sv = *v
937	}
938
939	for key, value := range shape {
940		switch key {
941		case "services":
942			if err := awsAwsjson11_deserializeDocumentServiceList(&sv.Services, value); err != nil {
943				return err
944			}
945
946		case "thingName":
947			if value != nil {
948				jtv, ok := value.(string)
949				if !ok {
950					return fmt.Errorf("expected ThingName to be of type string, got %T instead", value)
951				}
952				sv.ThingName = ptr.String(jtv)
953			}
954
955		default:
956			_, _ = key, value
957
958		}
959	}
960	*v = sv
961	return nil
962}
963
964func awsAwsjson11_deserializeDocumentLimitExceededException(v **types.LimitExceededException, value interface{}) error {
965	if v == nil {
966		return fmt.Errorf("unexpected nil of type %T", v)
967	}
968	if value == nil {
969		return nil
970	}
971
972	shape, ok := value.(map[string]interface{})
973	if !ok {
974		return fmt.Errorf("unexpected JSON type %v", value)
975	}
976
977	var sv *types.LimitExceededException
978	if *v == nil {
979		sv = &types.LimitExceededException{}
980	} else {
981		sv = *v
982	}
983
984	for key, value := range shape {
985		switch key {
986		case "message":
987			if value != nil {
988				jtv, ok := value.(string)
989				if !ok {
990					return fmt.Errorf("expected ErrorMessage to be of type string, got %T instead", value)
991				}
992				sv.Message = ptr.String(jtv)
993			}
994
995		default:
996			_, _ = key, value
997
998		}
999	}
1000	*v = sv
1001	return nil
1002}
1003
1004func awsAwsjson11_deserializeDocumentResourceNotFoundException(v **types.ResourceNotFoundException, value interface{}) error {
1005	if v == nil {
1006		return fmt.Errorf("unexpected nil of type %T", v)
1007	}
1008	if value == nil {
1009		return nil
1010	}
1011
1012	shape, ok := value.(map[string]interface{})
1013	if !ok {
1014		return fmt.Errorf("unexpected JSON type %v", value)
1015	}
1016
1017	var sv *types.ResourceNotFoundException
1018	if *v == nil {
1019		sv = &types.ResourceNotFoundException{}
1020	} else {
1021		sv = *v
1022	}
1023
1024	for key, value := range shape {
1025		switch key {
1026		case "message":
1027			if value != nil {
1028				jtv, ok := value.(string)
1029				if !ok {
1030					return fmt.Errorf("expected ErrorMessage to be of type string, got %T instead", value)
1031				}
1032				sv.Message = ptr.String(jtv)
1033			}
1034
1035		default:
1036			_, _ = key, value
1037
1038		}
1039	}
1040	*v = sv
1041	return nil
1042}
1043
1044func awsAwsjson11_deserializeDocumentServiceList(v *[]string, value interface{}) error {
1045	if v == nil {
1046		return fmt.Errorf("unexpected nil of type %T", v)
1047	}
1048	if value == nil {
1049		return nil
1050	}
1051
1052	shape, ok := value.([]interface{})
1053	if !ok {
1054		return fmt.Errorf("unexpected JSON type %v", value)
1055	}
1056
1057	var cv []string
1058	if *v == nil {
1059		cv = []string{}
1060	} else {
1061		cv = *v
1062	}
1063
1064	for _, value := range shape {
1065		var col string
1066		if value != nil {
1067			jtv, ok := value.(string)
1068			if !ok {
1069				return fmt.Errorf("expected Service to be of type string, got %T instead", value)
1070			}
1071			col = jtv
1072		}
1073		cv = append(cv, col)
1074
1075	}
1076	*v = cv
1077	return nil
1078}
1079
1080func awsAwsjson11_deserializeDocumentTag(v **types.Tag, value interface{}) error {
1081	if v == nil {
1082		return fmt.Errorf("unexpected nil of type %T", v)
1083	}
1084	if value == nil {
1085		return nil
1086	}
1087
1088	shape, ok := value.(map[string]interface{})
1089	if !ok {
1090		return fmt.Errorf("unexpected JSON type %v", value)
1091	}
1092
1093	var sv *types.Tag
1094	if *v == nil {
1095		sv = &types.Tag{}
1096	} else {
1097		sv = *v
1098	}
1099
1100	for key, value := range shape {
1101		switch key {
1102		case "key":
1103			if value != nil {
1104				jtv, ok := value.(string)
1105				if !ok {
1106					return fmt.Errorf("expected TagKey to be of type string, got %T instead", value)
1107				}
1108				sv.Key = ptr.String(jtv)
1109			}
1110
1111		case "value":
1112			if value != nil {
1113				jtv, ok := value.(string)
1114				if !ok {
1115					return fmt.Errorf("expected TagValue to be of type string, got %T instead", value)
1116				}
1117				sv.Value = ptr.String(jtv)
1118			}
1119
1120		default:
1121			_, _ = key, value
1122
1123		}
1124	}
1125	*v = sv
1126	return nil
1127}
1128
1129func awsAwsjson11_deserializeDocumentTagList(v *[]types.Tag, value interface{}) error {
1130	if v == nil {
1131		return fmt.Errorf("unexpected nil of type %T", v)
1132	}
1133	if value == nil {
1134		return nil
1135	}
1136
1137	shape, ok := value.([]interface{})
1138	if !ok {
1139		return fmt.Errorf("unexpected JSON type %v", value)
1140	}
1141
1142	var cv []types.Tag
1143	if *v == nil {
1144		cv = []types.Tag{}
1145	} else {
1146		cv = *v
1147	}
1148
1149	for _, value := range shape {
1150		var col types.Tag
1151		destAddr := &col
1152		if err := awsAwsjson11_deserializeDocumentTag(&destAddr, value); err != nil {
1153			return err
1154		}
1155		col = *destAddr
1156		cv = append(cv, col)
1157
1158	}
1159	*v = cv
1160	return nil
1161}
1162
1163func awsAwsjson11_deserializeDocumentTimeoutConfig(v **types.TimeoutConfig, value interface{}) error {
1164	if v == nil {
1165		return fmt.Errorf("unexpected nil of type %T", v)
1166	}
1167	if value == nil {
1168		return nil
1169	}
1170
1171	shape, ok := value.(map[string]interface{})
1172	if !ok {
1173		return fmt.Errorf("unexpected JSON type %v", value)
1174	}
1175
1176	var sv *types.TimeoutConfig
1177	if *v == nil {
1178		sv = &types.TimeoutConfig{}
1179	} else {
1180		sv = *v
1181	}
1182
1183	for key, value := range shape {
1184		switch key {
1185		case "maxLifetimeTimeoutMinutes":
1186			if value != nil {
1187				jtv, ok := value.(json.Number)
1188				if !ok {
1189					return fmt.Errorf("expected TimeoutInMin to be json.Number, got %T instead", value)
1190				}
1191				i64, err := jtv.Int64()
1192				if err != nil {
1193					return err
1194				}
1195				sv.MaxLifetimeTimeoutMinutes = int32(i64)
1196			}
1197
1198		default:
1199			_, _ = key, value
1200
1201		}
1202	}
1203	*v = sv
1204	return nil
1205}
1206
1207func awsAwsjson11_deserializeDocumentTunnel(v **types.Tunnel, value interface{}) error {
1208	if v == nil {
1209		return fmt.Errorf("unexpected nil of type %T", v)
1210	}
1211	if value == nil {
1212		return nil
1213	}
1214
1215	shape, ok := value.(map[string]interface{})
1216	if !ok {
1217		return fmt.Errorf("unexpected JSON type %v", value)
1218	}
1219
1220	var sv *types.Tunnel
1221	if *v == nil {
1222		sv = &types.Tunnel{}
1223	} else {
1224		sv = *v
1225	}
1226
1227	for key, value := range shape {
1228		switch key {
1229		case "createdAt":
1230			if value != nil {
1231				jtv, ok := value.(json.Number)
1232				if !ok {
1233					return fmt.Errorf("expected DateType to be json.Number, got %T instead", value)
1234				}
1235				f64, err := jtv.Float64()
1236				if err != nil {
1237					return err
1238				}
1239				sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64))
1240			}
1241
1242		case "description":
1243			if value != nil {
1244				jtv, ok := value.(string)
1245				if !ok {
1246					return fmt.Errorf("expected Description to be of type string, got %T instead", value)
1247				}
1248				sv.Description = ptr.String(jtv)
1249			}
1250
1251		case "destinationConfig":
1252			if err := awsAwsjson11_deserializeDocumentDestinationConfig(&sv.DestinationConfig, value); err != nil {
1253				return err
1254			}
1255
1256		case "destinationConnectionState":
1257			if err := awsAwsjson11_deserializeDocumentConnectionState(&sv.DestinationConnectionState, value); err != nil {
1258				return err
1259			}
1260
1261		case "lastUpdatedAt":
1262			if value != nil {
1263				jtv, ok := value.(json.Number)
1264				if !ok {
1265					return fmt.Errorf("expected DateType to be json.Number, got %T instead", value)
1266				}
1267				f64, err := jtv.Float64()
1268				if err != nil {
1269					return err
1270				}
1271				sv.LastUpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64))
1272			}
1273
1274		case "sourceConnectionState":
1275			if err := awsAwsjson11_deserializeDocumentConnectionState(&sv.SourceConnectionState, value); err != nil {
1276				return err
1277			}
1278
1279		case "status":
1280			if value != nil {
1281				jtv, ok := value.(string)
1282				if !ok {
1283					return fmt.Errorf("expected TunnelStatus to be of type string, got %T instead", value)
1284				}
1285				sv.Status = types.TunnelStatus(jtv)
1286			}
1287
1288		case "tags":
1289			if err := awsAwsjson11_deserializeDocumentTagList(&sv.Tags, value); err != nil {
1290				return err
1291			}
1292
1293		case "timeoutConfig":
1294			if err := awsAwsjson11_deserializeDocumentTimeoutConfig(&sv.TimeoutConfig, value); err != nil {
1295				return err
1296			}
1297
1298		case "tunnelArn":
1299			if value != nil {
1300				jtv, ok := value.(string)
1301				if !ok {
1302					return fmt.Errorf("expected TunnelArn to be of type string, got %T instead", value)
1303				}
1304				sv.TunnelArn = ptr.String(jtv)
1305			}
1306
1307		case "tunnelId":
1308			if value != nil {
1309				jtv, ok := value.(string)
1310				if !ok {
1311					return fmt.Errorf("expected TunnelId to be of type string, got %T instead", value)
1312				}
1313				sv.TunnelId = ptr.String(jtv)
1314			}
1315
1316		default:
1317			_, _ = key, value
1318
1319		}
1320	}
1321	*v = sv
1322	return nil
1323}
1324
1325func awsAwsjson11_deserializeDocumentTunnelSummary(v **types.TunnelSummary, value interface{}) error {
1326	if v == nil {
1327		return fmt.Errorf("unexpected nil of type %T", v)
1328	}
1329	if value == nil {
1330		return nil
1331	}
1332
1333	shape, ok := value.(map[string]interface{})
1334	if !ok {
1335		return fmt.Errorf("unexpected JSON type %v", value)
1336	}
1337
1338	var sv *types.TunnelSummary
1339	if *v == nil {
1340		sv = &types.TunnelSummary{}
1341	} else {
1342		sv = *v
1343	}
1344
1345	for key, value := range shape {
1346		switch key {
1347		case "createdAt":
1348			if value != nil {
1349				jtv, ok := value.(json.Number)
1350				if !ok {
1351					return fmt.Errorf("expected DateType to be json.Number, got %T instead", value)
1352				}
1353				f64, err := jtv.Float64()
1354				if err != nil {
1355					return err
1356				}
1357				sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64))
1358			}
1359
1360		case "description":
1361			if value != nil {
1362				jtv, ok := value.(string)
1363				if !ok {
1364					return fmt.Errorf("expected Description to be of type string, got %T instead", value)
1365				}
1366				sv.Description = ptr.String(jtv)
1367			}
1368
1369		case "lastUpdatedAt":
1370			if value != nil {
1371				jtv, ok := value.(json.Number)
1372				if !ok {
1373					return fmt.Errorf("expected DateType to be json.Number, got %T instead", value)
1374				}
1375				f64, err := jtv.Float64()
1376				if err != nil {
1377					return err
1378				}
1379				sv.LastUpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64))
1380			}
1381
1382		case "status":
1383			if value != nil {
1384				jtv, ok := value.(string)
1385				if !ok {
1386					return fmt.Errorf("expected TunnelStatus to be of type string, got %T instead", value)
1387				}
1388				sv.Status = types.TunnelStatus(jtv)
1389			}
1390
1391		case "tunnelArn":
1392			if value != nil {
1393				jtv, ok := value.(string)
1394				if !ok {
1395					return fmt.Errorf("expected TunnelArn to be of type string, got %T instead", value)
1396				}
1397				sv.TunnelArn = ptr.String(jtv)
1398			}
1399
1400		case "tunnelId":
1401			if value != nil {
1402				jtv, ok := value.(string)
1403				if !ok {
1404					return fmt.Errorf("expected TunnelId to be of type string, got %T instead", value)
1405				}
1406				sv.TunnelId = ptr.String(jtv)
1407			}
1408
1409		default:
1410			_, _ = key, value
1411
1412		}
1413	}
1414	*v = sv
1415	return nil
1416}
1417
1418func awsAwsjson11_deserializeDocumentTunnelSummaryList(v *[]types.TunnelSummary, value interface{}) error {
1419	if v == nil {
1420		return fmt.Errorf("unexpected nil of type %T", v)
1421	}
1422	if value == nil {
1423		return nil
1424	}
1425
1426	shape, ok := value.([]interface{})
1427	if !ok {
1428		return fmt.Errorf("unexpected JSON type %v", value)
1429	}
1430
1431	var cv []types.TunnelSummary
1432	if *v == nil {
1433		cv = []types.TunnelSummary{}
1434	} else {
1435		cv = *v
1436	}
1437
1438	for _, value := range shape {
1439		var col types.TunnelSummary
1440		destAddr := &col
1441		if err := awsAwsjson11_deserializeDocumentTunnelSummary(&destAddr, value); err != nil {
1442			return err
1443		}
1444		col = *destAddr
1445		cv = append(cv, col)
1446
1447	}
1448	*v = cv
1449	return nil
1450}
1451
1452func awsAwsjson11_deserializeOpDocumentCloseTunnelOutput(v **CloseTunnelOutput, value interface{}) error {
1453	if v == nil {
1454		return fmt.Errorf("unexpected nil of type %T", v)
1455	}
1456	if value == nil {
1457		return nil
1458	}
1459
1460	shape, ok := value.(map[string]interface{})
1461	if !ok {
1462		return fmt.Errorf("unexpected JSON type %v", value)
1463	}
1464
1465	var sv *CloseTunnelOutput
1466	if *v == nil {
1467		sv = &CloseTunnelOutput{}
1468	} else {
1469		sv = *v
1470	}
1471
1472	for key, value := range shape {
1473		switch key {
1474		default:
1475			_, _ = key, value
1476
1477		}
1478	}
1479	*v = sv
1480	return nil
1481}
1482
1483func awsAwsjson11_deserializeOpDocumentDescribeTunnelOutput(v **DescribeTunnelOutput, value interface{}) error {
1484	if v == nil {
1485		return fmt.Errorf("unexpected nil of type %T", v)
1486	}
1487	if value == nil {
1488		return nil
1489	}
1490
1491	shape, ok := value.(map[string]interface{})
1492	if !ok {
1493		return fmt.Errorf("unexpected JSON type %v", value)
1494	}
1495
1496	var sv *DescribeTunnelOutput
1497	if *v == nil {
1498		sv = &DescribeTunnelOutput{}
1499	} else {
1500		sv = *v
1501	}
1502
1503	for key, value := range shape {
1504		switch key {
1505		case "tunnel":
1506			if err := awsAwsjson11_deserializeDocumentTunnel(&sv.Tunnel, value); err != nil {
1507				return err
1508			}
1509
1510		default:
1511			_, _ = key, value
1512
1513		}
1514	}
1515	*v = sv
1516	return nil
1517}
1518
1519func awsAwsjson11_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsForResourceOutput, value interface{}) error {
1520	if v == nil {
1521		return fmt.Errorf("unexpected nil of type %T", v)
1522	}
1523	if value == nil {
1524		return nil
1525	}
1526
1527	shape, ok := value.(map[string]interface{})
1528	if !ok {
1529		return fmt.Errorf("unexpected JSON type %v", value)
1530	}
1531
1532	var sv *ListTagsForResourceOutput
1533	if *v == nil {
1534		sv = &ListTagsForResourceOutput{}
1535	} else {
1536		sv = *v
1537	}
1538
1539	for key, value := range shape {
1540		switch key {
1541		case "tags":
1542			if err := awsAwsjson11_deserializeDocumentTagList(&sv.Tags, value); err != nil {
1543				return err
1544			}
1545
1546		default:
1547			_, _ = key, value
1548
1549		}
1550	}
1551	*v = sv
1552	return nil
1553}
1554
1555func awsAwsjson11_deserializeOpDocumentListTunnelsOutput(v **ListTunnelsOutput, value interface{}) error {
1556	if v == nil {
1557		return fmt.Errorf("unexpected nil of type %T", v)
1558	}
1559	if value == nil {
1560		return nil
1561	}
1562
1563	shape, ok := value.(map[string]interface{})
1564	if !ok {
1565		return fmt.Errorf("unexpected JSON type %v", value)
1566	}
1567
1568	var sv *ListTunnelsOutput
1569	if *v == nil {
1570		sv = &ListTunnelsOutput{}
1571	} else {
1572		sv = *v
1573	}
1574
1575	for key, value := range shape {
1576		switch key {
1577		case "nextToken":
1578			if value != nil {
1579				jtv, ok := value.(string)
1580				if !ok {
1581					return fmt.Errorf("expected NextToken to be of type string, got %T instead", value)
1582				}
1583				sv.NextToken = ptr.String(jtv)
1584			}
1585
1586		case "tunnelSummaries":
1587			if err := awsAwsjson11_deserializeDocumentTunnelSummaryList(&sv.TunnelSummaries, value); err != nil {
1588				return err
1589			}
1590
1591		default:
1592			_, _ = key, value
1593
1594		}
1595	}
1596	*v = sv
1597	return nil
1598}
1599
1600func awsAwsjson11_deserializeOpDocumentOpenTunnelOutput(v **OpenTunnelOutput, value interface{}) error {
1601	if v == nil {
1602		return fmt.Errorf("unexpected nil of type %T", v)
1603	}
1604	if value == nil {
1605		return nil
1606	}
1607
1608	shape, ok := value.(map[string]interface{})
1609	if !ok {
1610		return fmt.Errorf("unexpected JSON type %v", value)
1611	}
1612
1613	var sv *OpenTunnelOutput
1614	if *v == nil {
1615		sv = &OpenTunnelOutput{}
1616	} else {
1617		sv = *v
1618	}
1619
1620	for key, value := range shape {
1621		switch key {
1622		case "destinationAccessToken":
1623			if value != nil {
1624				jtv, ok := value.(string)
1625				if !ok {
1626					return fmt.Errorf("expected ClientAccessToken to be of type string, got %T instead", value)
1627				}
1628				sv.DestinationAccessToken = ptr.String(jtv)
1629			}
1630
1631		case "sourceAccessToken":
1632			if value != nil {
1633				jtv, ok := value.(string)
1634				if !ok {
1635					return fmt.Errorf("expected ClientAccessToken to be of type string, got %T instead", value)
1636				}
1637				sv.SourceAccessToken = ptr.String(jtv)
1638			}
1639
1640		case "tunnelArn":
1641			if value != nil {
1642				jtv, ok := value.(string)
1643				if !ok {
1644					return fmt.Errorf("expected TunnelArn to be of type string, got %T instead", value)
1645				}
1646				sv.TunnelArn = ptr.String(jtv)
1647			}
1648
1649		case "tunnelId":
1650			if value != nil {
1651				jtv, ok := value.(string)
1652				if !ok {
1653					return fmt.Errorf("expected TunnelId to be of type string, got %T instead", value)
1654				}
1655				sv.TunnelId = ptr.String(jtv)
1656			}
1657
1658		default:
1659			_, _ = key, value
1660
1661		}
1662	}
1663	*v = sv
1664	return nil
1665}
1666
1667func awsAwsjson11_deserializeOpDocumentTagResourceOutput(v **TagResourceOutput, value interface{}) error {
1668	if v == nil {
1669		return fmt.Errorf("unexpected nil of type %T", v)
1670	}
1671	if value == nil {
1672		return nil
1673	}
1674
1675	shape, ok := value.(map[string]interface{})
1676	if !ok {
1677		return fmt.Errorf("unexpected JSON type %v", value)
1678	}
1679
1680	var sv *TagResourceOutput
1681	if *v == nil {
1682		sv = &TagResourceOutput{}
1683	} else {
1684		sv = *v
1685	}
1686
1687	for key, value := range shape {
1688		switch key {
1689		default:
1690			_, _ = key, value
1691
1692		}
1693	}
1694	*v = sv
1695	return nil
1696}
1697
1698func awsAwsjson11_deserializeOpDocumentUntagResourceOutput(v **UntagResourceOutput, value interface{}) error {
1699	if v == nil {
1700		return fmt.Errorf("unexpected nil of type %T", v)
1701	}
1702	if value == nil {
1703		return nil
1704	}
1705
1706	shape, ok := value.(map[string]interface{})
1707	if !ok {
1708		return fmt.Errorf("unexpected JSON type %v", value)
1709	}
1710
1711	var sv *UntagResourceOutput
1712	if *v == nil {
1713		sv = &UntagResourceOutput{}
1714	} else {
1715		sv = *v
1716	}
1717
1718	for key, value := range shape {
1719		switch key {
1720		default:
1721			_, _ = key, value
1722
1723		}
1724	}
1725	*v = sv
1726	return nil
1727}
1728