1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package sso
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/sso/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	smithyhttp "github.com/aws/smithy-go/transport/http"
17	"io"
18	"io/ioutil"
19	"strings"
20)
21
22type awsRestjson1_deserializeOpGetRoleCredentials struct {
23}
24
25func (*awsRestjson1_deserializeOpGetRoleCredentials) ID() string {
26	return "OperationDeserializer"
27}
28
29func (m *awsRestjson1_deserializeOpGetRoleCredentials) 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, awsRestjson1_deserializeOpErrorGetRoleCredentials(response, &metadata)
44	}
45	output := &GetRoleCredentialsOutput{}
46	out.Result = output
47
48	var buff [1024]byte
49	ringBuffer := smithyio.NewRingBuffer(buff[:])
50
51	body := io.TeeReader(response.Body, ringBuffer)
52
53	decoder := json.NewDecoder(body)
54	decoder.UseNumber()
55	var shape interface{}
56	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
57		var snapshot bytes.Buffer
58		io.Copy(&snapshot, ringBuffer)
59		err = &smithy.DeserializationError{
60			Err:      fmt.Errorf("failed to decode response body, %w", err),
61			Snapshot: snapshot.Bytes(),
62		}
63		return out, metadata, err
64	}
65
66	err = awsRestjson1_deserializeOpDocumentGetRoleCredentialsOutput(&output, shape)
67	if err != nil {
68		var snapshot bytes.Buffer
69		io.Copy(&snapshot, ringBuffer)
70		return out, metadata, &smithy.DeserializationError{
71			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
72			Snapshot: snapshot.Bytes(),
73		}
74	}
75
76	return out, metadata, err
77}
78
79func awsRestjson1_deserializeOpErrorGetRoleCredentials(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("InvalidRequestException", errorCode):
121		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
122
123	case strings.EqualFold("ResourceNotFoundException", errorCode):
124		return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody)
125
126	case strings.EqualFold("TooManyRequestsException", errorCode):
127		return awsRestjson1_deserializeErrorTooManyRequestsException(response, errorBody)
128
129	case strings.EqualFold("UnauthorizedException", errorCode):
130		return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody)
131
132	default:
133		genericError := &smithy.GenericAPIError{
134			Code:    errorCode,
135			Message: errorMessage,
136		}
137		return genericError
138
139	}
140}
141
142func awsRestjson1_deserializeOpDocumentGetRoleCredentialsOutput(v **GetRoleCredentialsOutput, value interface{}) error {
143	if v == nil {
144		return fmt.Errorf("unexpected nil of type %T", v)
145	}
146	if value == nil {
147		return nil
148	}
149
150	shape, ok := value.(map[string]interface{})
151	if !ok {
152		return fmt.Errorf("unexpected JSON type %v", value)
153	}
154
155	var sv *GetRoleCredentialsOutput
156	if *v == nil {
157		sv = &GetRoleCredentialsOutput{}
158	} else {
159		sv = *v
160	}
161
162	for key, value := range shape {
163		switch key {
164		case "roleCredentials":
165			if err := awsRestjson1_deserializeDocumentRoleCredentials(&sv.RoleCredentials, value); err != nil {
166				return err
167			}
168
169		default:
170			_, _ = key, value
171
172		}
173	}
174	*v = sv
175	return nil
176}
177
178type awsRestjson1_deserializeOpListAccountRoles struct {
179}
180
181func (*awsRestjson1_deserializeOpListAccountRoles) ID() string {
182	return "OperationDeserializer"
183}
184
185func (m *awsRestjson1_deserializeOpListAccountRoles) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
186	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
187) {
188	out, metadata, err = next.HandleDeserialize(ctx, in)
189	if err != nil {
190		return out, metadata, err
191	}
192
193	response, ok := out.RawResponse.(*smithyhttp.Response)
194	if !ok {
195		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
196	}
197
198	if response.StatusCode < 200 || response.StatusCode >= 300 {
199		return out, metadata, awsRestjson1_deserializeOpErrorListAccountRoles(response, &metadata)
200	}
201	output := &ListAccountRolesOutput{}
202	out.Result = output
203
204	var buff [1024]byte
205	ringBuffer := smithyio.NewRingBuffer(buff[:])
206
207	body := io.TeeReader(response.Body, ringBuffer)
208
209	decoder := json.NewDecoder(body)
210	decoder.UseNumber()
211	var shape interface{}
212	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
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 out, metadata, err
220	}
221
222	err = awsRestjson1_deserializeOpDocumentListAccountRolesOutput(&output, shape)
223	if err != nil {
224		var snapshot bytes.Buffer
225		io.Copy(&snapshot, ringBuffer)
226		return out, metadata, &smithy.DeserializationError{
227			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
228			Snapshot: snapshot.Bytes(),
229		}
230	}
231
232	return out, metadata, err
233}
234
235func awsRestjson1_deserializeOpErrorListAccountRoles(response *smithyhttp.Response, metadata *middleware.Metadata) error {
236	var errorBuffer bytes.Buffer
237	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
238		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
239	}
240	errorBody := bytes.NewReader(errorBuffer.Bytes())
241
242	errorCode := "UnknownError"
243	errorMessage := errorCode
244
245	code := response.Header.Get("X-Amzn-ErrorType")
246	if len(code) != 0 {
247		errorCode = restjson.SanitizeErrorCode(code)
248	}
249
250	var buff [1024]byte
251	ringBuffer := smithyio.NewRingBuffer(buff[:])
252
253	body := io.TeeReader(errorBody, ringBuffer)
254	decoder := json.NewDecoder(body)
255	decoder.UseNumber()
256	code, message, err := restjson.GetErrorInfo(decoder)
257	if err != nil {
258		var snapshot bytes.Buffer
259		io.Copy(&snapshot, ringBuffer)
260		err = &smithy.DeserializationError{
261			Err:      fmt.Errorf("failed to decode response body, %w", err),
262			Snapshot: snapshot.Bytes(),
263		}
264		return err
265	}
266
267	errorBody.Seek(0, io.SeekStart)
268	if len(code) != 0 {
269		errorCode = restjson.SanitizeErrorCode(code)
270	}
271	if len(message) != 0 {
272		errorMessage = message
273	}
274
275	switch {
276	case strings.EqualFold("InvalidRequestException", errorCode):
277		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
278
279	case strings.EqualFold("ResourceNotFoundException", errorCode):
280		return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody)
281
282	case strings.EqualFold("TooManyRequestsException", errorCode):
283		return awsRestjson1_deserializeErrorTooManyRequestsException(response, errorBody)
284
285	case strings.EqualFold("UnauthorizedException", errorCode):
286		return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody)
287
288	default:
289		genericError := &smithy.GenericAPIError{
290			Code:    errorCode,
291			Message: errorMessage,
292		}
293		return genericError
294
295	}
296}
297
298func awsRestjson1_deserializeOpDocumentListAccountRolesOutput(v **ListAccountRolesOutput, value interface{}) error {
299	if v == nil {
300		return fmt.Errorf("unexpected nil of type %T", v)
301	}
302	if value == nil {
303		return nil
304	}
305
306	shape, ok := value.(map[string]interface{})
307	if !ok {
308		return fmt.Errorf("unexpected JSON type %v", value)
309	}
310
311	var sv *ListAccountRolesOutput
312	if *v == nil {
313		sv = &ListAccountRolesOutput{}
314	} else {
315		sv = *v
316	}
317
318	for key, value := range shape {
319		switch key {
320		case "nextToken":
321			if value != nil {
322				jtv, ok := value.(string)
323				if !ok {
324					return fmt.Errorf("expected NextTokenType to be of type string, got %T instead", value)
325				}
326				sv.NextToken = ptr.String(jtv)
327			}
328
329		case "roleList":
330			if err := awsRestjson1_deserializeDocumentRoleListType(&sv.RoleList, value); err != nil {
331				return err
332			}
333
334		default:
335			_, _ = key, value
336
337		}
338	}
339	*v = sv
340	return nil
341}
342
343type awsRestjson1_deserializeOpListAccounts struct {
344}
345
346func (*awsRestjson1_deserializeOpListAccounts) ID() string {
347	return "OperationDeserializer"
348}
349
350func (m *awsRestjson1_deserializeOpListAccounts) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
351	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
352) {
353	out, metadata, err = next.HandleDeserialize(ctx, in)
354	if err != nil {
355		return out, metadata, err
356	}
357
358	response, ok := out.RawResponse.(*smithyhttp.Response)
359	if !ok {
360		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
361	}
362
363	if response.StatusCode < 200 || response.StatusCode >= 300 {
364		return out, metadata, awsRestjson1_deserializeOpErrorListAccounts(response, &metadata)
365	}
366	output := &ListAccountsOutput{}
367	out.Result = output
368
369	var buff [1024]byte
370	ringBuffer := smithyio.NewRingBuffer(buff[:])
371
372	body := io.TeeReader(response.Body, ringBuffer)
373
374	decoder := json.NewDecoder(body)
375	decoder.UseNumber()
376	var shape interface{}
377	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
378		var snapshot bytes.Buffer
379		io.Copy(&snapshot, ringBuffer)
380		err = &smithy.DeserializationError{
381			Err:      fmt.Errorf("failed to decode response body, %w", err),
382			Snapshot: snapshot.Bytes(),
383		}
384		return out, metadata, err
385	}
386
387	err = awsRestjson1_deserializeOpDocumentListAccountsOutput(&output, shape)
388	if err != nil {
389		var snapshot bytes.Buffer
390		io.Copy(&snapshot, ringBuffer)
391		return out, metadata, &smithy.DeserializationError{
392			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
393			Snapshot: snapshot.Bytes(),
394		}
395	}
396
397	return out, metadata, err
398}
399
400func awsRestjson1_deserializeOpErrorListAccounts(response *smithyhttp.Response, metadata *middleware.Metadata) error {
401	var errorBuffer bytes.Buffer
402	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
403		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
404	}
405	errorBody := bytes.NewReader(errorBuffer.Bytes())
406
407	errorCode := "UnknownError"
408	errorMessage := errorCode
409
410	code := response.Header.Get("X-Amzn-ErrorType")
411	if len(code) != 0 {
412		errorCode = restjson.SanitizeErrorCode(code)
413	}
414
415	var buff [1024]byte
416	ringBuffer := smithyio.NewRingBuffer(buff[:])
417
418	body := io.TeeReader(errorBody, ringBuffer)
419	decoder := json.NewDecoder(body)
420	decoder.UseNumber()
421	code, message, err := restjson.GetErrorInfo(decoder)
422	if err != nil {
423		var snapshot bytes.Buffer
424		io.Copy(&snapshot, ringBuffer)
425		err = &smithy.DeserializationError{
426			Err:      fmt.Errorf("failed to decode response body, %w", err),
427			Snapshot: snapshot.Bytes(),
428		}
429		return err
430	}
431
432	errorBody.Seek(0, io.SeekStart)
433	if len(code) != 0 {
434		errorCode = restjson.SanitizeErrorCode(code)
435	}
436	if len(message) != 0 {
437		errorMessage = message
438	}
439
440	switch {
441	case strings.EqualFold("InvalidRequestException", errorCode):
442		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
443
444	case strings.EqualFold("ResourceNotFoundException", errorCode):
445		return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody)
446
447	case strings.EqualFold("TooManyRequestsException", errorCode):
448		return awsRestjson1_deserializeErrorTooManyRequestsException(response, errorBody)
449
450	case strings.EqualFold("UnauthorizedException", errorCode):
451		return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody)
452
453	default:
454		genericError := &smithy.GenericAPIError{
455			Code:    errorCode,
456			Message: errorMessage,
457		}
458		return genericError
459
460	}
461}
462
463func awsRestjson1_deserializeOpDocumentListAccountsOutput(v **ListAccountsOutput, value interface{}) error {
464	if v == nil {
465		return fmt.Errorf("unexpected nil of type %T", v)
466	}
467	if value == nil {
468		return nil
469	}
470
471	shape, ok := value.(map[string]interface{})
472	if !ok {
473		return fmt.Errorf("unexpected JSON type %v", value)
474	}
475
476	var sv *ListAccountsOutput
477	if *v == nil {
478		sv = &ListAccountsOutput{}
479	} else {
480		sv = *v
481	}
482
483	for key, value := range shape {
484		switch key {
485		case "accountList":
486			if err := awsRestjson1_deserializeDocumentAccountListType(&sv.AccountList, value); err != nil {
487				return err
488			}
489
490		case "nextToken":
491			if value != nil {
492				jtv, ok := value.(string)
493				if !ok {
494					return fmt.Errorf("expected NextTokenType to be of type string, got %T instead", value)
495				}
496				sv.NextToken = ptr.String(jtv)
497			}
498
499		default:
500			_, _ = key, value
501
502		}
503	}
504	*v = sv
505	return nil
506}
507
508type awsRestjson1_deserializeOpLogout struct {
509}
510
511func (*awsRestjson1_deserializeOpLogout) ID() string {
512	return "OperationDeserializer"
513}
514
515func (m *awsRestjson1_deserializeOpLogout) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
516	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
517) {
518	out, metadata, err = next.HandleDeserialize(ctx, in)
519	if err != nil {
520		return out, metadata, err
521	}
522
523	response, ok := out.RawResponse.(*smithyhttp.Response)
524	if !ok {
525		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
526	}
527
528	if response.StatusCode < 200 || response.StatusCode >= 300 {
529		return out, metadata, awsRestjson1_deserializeOpErrorLogout(response, &metadata)
530	}
531	output := &LogoutOutput{}
532	out.Result = output
533
534	if _, err = io.Copy(ioutil.Discard, response.Body); err != nil {
535		return out, metadata, &smithy.DeserializationError{
536			Err: fmt.Errorf("failed to discard response body, %w", err),
537		}
538	}
539
540	return out, metadata, err
541}
542
543func awsRestjson1_deserializeOpErrorLogout(response *smithyhttp.Response, metadata *middleware.Metadata) error {
544	var errorBuffer bytes.Buffer
545	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
546		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
547	}
548	errorBody := bytes.NewReader(errorBuffer.Bytes())
549
550	errorCode := "UnknownError"
551	errorMessage := errorCode
552
553	code := response.Header.Get("X-Amzn-ErrorType")
554	if len(code) != 0 {
555		errorCode = restjson.SanitizeErrorCode(code)
556	}
557
558	var buff [1024]byte
559	ringBuffer := smithyio.NewRingBuffer(buff[:])
560
561	body := io.TeeReader(errorBody, ringBuffer)
562	decoder := json.NewDecoder(body)
563	decoder.UseNumber()
564	code, message, err := restjson.GetErrorInfo(decoder)
565	if err != nil {
566		var snapshot bytes.Buffer
567		io.Copy(&snapshot, ringBuffer)
568		err = &smithy.DeserializationError{
569			Err:      fmt.Errorf("failed to decode response body, %w", err),
570			Snapshot: snapshot.Bytes(),
571		}
572		return err
573	}
574
575	errorBody.Seek(0, io.SeekStart)
576	if len(code) != 0 {
577		errorCode = restjson.SanitizeErrorCode(code)
578	}
579	if len(message) != 0 {
580		errorMessage = message
581	}
582
583	switch {
584	case strings.EqualFold("InvalidRequestException", errorCode):
585		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
586
587	case strings.EqualFold("TooManyRequestsException", errorCode):
588		return awsRestjson1_deserializeErrorTooManyRequestsException(response, errorBody)
589
590	case strings.EqualFold("UnauthorizedException", errorCode):
591		return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody)
592
593	default:
594		genericError := &smithy.GenericAPIError{
595			Code:    errorCode,
596			Message: errorMessage,
597		}
598		return genericError
599
600	}
601}
602
603func awsRestjson1_deserializeErrorInvalidRequestException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
604	output := &types.InvalidRequestException{}
605	var buff [1024]byte
606	ringBuffer := smithyio.NewRingBuffer(buff[:])
607
608	body := io.TeeReader(errorBody, ringBuffer)
609	decoder := json.NewDecoder(body)
610	decoder.UseNumber()
611	var shape interface{}
612	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
613		var snapshot bytes.Buffer
614		io.Copy(&snapshot, ringBuffer)
615		err = &smithy.DeserializationError{
616			Err:      fmt.Errorf("failed to decode response body, %w", err),
617			Snapshot: snapshot.Bytes(),
618		}
619		return err
620	}
621
622	err := awsRestjson1_deserializeDocumentInvalidRequestException(&output, shape)
623
624	if err != nil {
625		var snapshot bytes.Buffer
626		io.Copy(&snapshot, ringBuffer)
627		err = &smithy.DeserializationError{
628			Err:      fmt.Errorf("failed to decode response body, %w", err),
629			Snapshot: snapshot.Bytes(),
630		}
631		return err
632	}
633
634	errorBody.Seek(0, io.SeekStart)
635
636	return output
637}
638
639func awsRestjson1_deserializeErrorResourceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
640	output := &types.ResourceNotFoundException{}
641	var buff [1024]byte
642	ringBuffer := smithyio.NewRingBuffer(buff[:])
643
644	body := io.TeeReader(errorBody, ringBuffer)
645	decoder := json.NewDecoder(body)
646	decoder.UseNumber()
647	var shape interface{}
648	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
649		var snapshot bytes.Buffer
650		io.Copy(&snapshot, ringBuffer)
651		err = &smithy.DeserializationError{
652			Err:      fmt.Errorf("failed to decode response body, %w", err),
653			Snapshot: snapshot.Bytes(),
654		}
655		return err
656	}
657
658	err := awsRestjson1_deserializeDocumentResourceNotFoundException(&output, shape)
659
660	if err != nil {
661		var snapshot bytes.Buffer
662		io.Copy(&snapshot, ringBuffer)
663		err = &smithy.DeserializationError{
664			Err:      fmt.Errorf("failed to decode response body, %w", err),
665			Snapshot: snapshot.Bytes(),
666		}
667		return err
668	}
669
670	errorBody.Seek(0, io.SeekStart)
671
672	return output
673}
674
675func awsRestjson1_deserializeErrorTooManyRequestsException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
676	output := &types.TooManyRequestsException{}
677	var buff [1024]byte
678	ringBuffer := smithyio.NewRingBuffer(buff[:])
679
680	body := io.TeeReader(errorBody, ringBuffer)
681	decoder := json.NewDecoder(body)
682	decoder.UseNumber()
683	var shape interface{}
684	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
685		var snapshot bytes.Buffer
686		io.Copy(&snapshot, ringBuffer)
687		err = &smithy.DeserializationError{
688			Err:      fmt.Errorf("failed to decode response body, %w", err),
689			Snapshot: snapshot.Bytes(),
690		}
691		return err
692	}
693
694	err := awsRestjson1_deserializeDocumentTooManyRequestsException(&output, shape)
695
696	if err != nil {
697		var snapshot bytes.Buffer
698		io.Copy(&snapshot, ringBuffer)
699		err = &smithy.DeserializationError{
700			Err:      fmt.Errorf("failed to decode response body, %w", err),
701			Snapshot: snapshot.Bytes(),
702		}
703		return err
704	}
705
706	errorBody.Seek(0, io.SeekStart)
707
708	return output
709}
710
711func awsRestjson1_deserializeErrorUnauthorizedException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
712	output := &types.UnauthorizedException{}
713	var buff [1024]byte
714	ringBuffer := smithyio.NewRingBuffer(buff[:])
715
716	body := io.TeeReader(errorBody, ringBuffer)
717	decoder := json.NewDecoder(body)
718	decoder.UseNumber()
719	var shape interface{}
720	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
721		var snapshot bytes.Buffer
722		io.Copy(&snapshot, ringBuffer)
723		err = &smithy.DeserializationError{
724			Err:      fmt.Errorf("failed to decode response body, %w", err),
725			Snapshot: snapshot.Bytes(),
726		}
727		return err
728	}
729
730	err := awsRestjson1_deserializeDocumentUnauthorizedException(&output, shape)
731
732	if err != nil {
733		var snapshot bytes.Buffer
734		io.Copy(&snapshot, ringBuffer)
735		err = &smithy.DeserializationError{
736			Err:      fmt.Errorf("failed to decode response body, %w", err),
737			Snapshot: snapshot.Bytes(),
738		}
739		return err
740	}
741
742	errorBody.Seek(0, io.SeekStart)
743
744	return output
745}
746
747func awsRestjson1_deserializeDocumentAccountInfo(v **types.AccountInfo, value interface{}) error {
748	if v == nil {
749		return fmt.Errorf("unexpected nil of type %T", v)
750	}
751	if value == nil {
752		return nil
753	}
754
755	shape, ok := value.(map[string]interface{})
756	if !ok {
757		return fmt.Errorf("unexpected JSON type %v", value)
758	}
759
760	var sv *types.AccountInfo
761	if *v == nil {
762		sv = &types.AccountInfo{}
763	} else {
764		sv = *v
765	}
766
767	for key, value := range shape {
768		switch key {
769		case "accountId":
770			if value != nil {
771				jtv, ok := value.(string)
772				if !ok {
773					return fmt.Errorf("expected AccountIdType to be of type string, got %T instead", value)
774				}
775				sv.AccountId = ptr.String(jtv)
776			}
777
778		case "accountName":
779			if value != nil {
780				jtv, ok := value.(string)
781				if !ok {
782					return fmt.Errorf("expected AccountNameType to be of type string, got %T instead", value)
783				}
784				sv.AccountName = ptr.String(jtv)
785			}
786
787		case "emailAddress":
788			if value != nil {
789				jtv, ok := value.(string)
790				if !ok {
791					return fmt.Errorf("expected EmailAddressType to be of type string, got %T instead", value)
792				}
793				sv.EmailAddress = ptr.String(jtv)
794			}
795
796		default:
797			_, _ = key, value
798
799		}
800	}
801	*v = sv
802	return nil
803}
804
805func awsRestjson1_deserializeDocumentAccountListType(v *[]types.AccountInfo, value interface{}) error {
806	if v == nil {
807		return fmt.Errorf("unexpected nil of type %T", v)
808	}
809	if value == nil {
810		return nil
811	}
812
813	shape, ok := value.([]interface{})
814	if !ok {
815		return fmt.Errorf("unexpected JSON type %v", value)
816	}
817
818	var cv []types.AccountInfo
819	if *v == nil {
820		cv = []types.AccountInfo{}
821	} else {
822		cv = *v
823	}
824
825	for _, value := range shape {
826		var col types.AccountInfo
827		destAddr := &col
828		if err := awsRestjson1_deserializeDocumentAccountInfo(&destAddr, value); err != nil {
829			return err
830		}
831		col = *destAddr
832		cv = append(cv, col)
833
834	}
835	*v = cv
836	return nil
837}
838
839func awsRestjson1_deserializeDocumentInvalidRequestException(v **types.InvalidRequestException, value interface{}) error {
840	if v == nil {
841		return fmt.Errorf("unexpected nil of type %T", v)
842	}
843	if value == nil {
844		return nil
845	}
846
847	shape, ok := value.(map[string]interface{})
848	if !ok {
849		return fmt.Errorf("unexpected JSON type %v", value)
850	}
851
852	var sv *types.InvalidRequestException
853	if *v == nil {
854		sv = &types.InvalidRequestException{}
855	} else {
856		sv = *v
857	}
858
859	for key, value := range shape {
860		switch key {
861		case "message":
862			if value != nil {
863				jtv, ok := value.(string)
864				if !ok {
865					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
866				}
867				sv.Message = ptr.String(jtv)
868			}
869
870		default:
871			_, _ = key, value
872
873		}
874	}
875	*v = sv
876	return nil
877}
878
879func awsRestjson1_deserializeDocumentResourceNotFoundException(v **types.ResourceNotFoundException, value interface{}) error {
880	if v == nil {
881		return fmt.Errorf("unexpected nil of type %T", v)
882	}
883	if value == nil {
884		return nil
885	}
886
887	shape, ok := value.(map[string]interface{})
888	if !ok {
889		return fmt.Errorf("unexpected JSON type %v", value)
890	}
891
892	var sv *types.ResourceNotFoundException
893	if *v == nil {
894		sv = &types.ResourceNotFoundException{}
895	} else {
896		sv = *v
897	}
898
899	for key, value := range shape {
900		switch key {
901		case "message":
902			if value != nil {
903				jtv, ok := value.(string)
904				if !ok {
905					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
906				}
907				sv.Message = ptr.String(jtv)
908			}
909
910		default:
911			_, _ = key, value
912
913		}
914	}
915	*v = sv
916	return nil
917}
918
919func awsRestjson1_deserializeDocumentRoleCredentials(v **types.RoleCredentials, 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.RoleCredentials
933	if *v == nil {
934		sv = &types.RoleCredentials{}
935	} else {
936		sv = *v
937	}
938
939	for key, value := range shape {
940		switch key {
941		case "accessKeyId":
942			if value != nil {
943				jtv, ok := value.(string)
944				if !ok {
945					return fmt.Errorf("expected AccessKeyType to be of type string, got %T instead", value)
946				}
947				sv.AccessKeyId = ptr.String(jtv)
948			}
949
950		case "expiration":
951			if value != nil {
952				jtv, ok := value.(json.Number)
953				if !ok {
954					return fmt.Errorf("expected ExpirationTimestampType to be json.Number, got %T instead", value)
955				}
956				i64, err := jtv.Int64()
957				if err != nil {
958					return err
959				}
960				sv.Expiration = i64
961			}
962
963		case "secretAccessKey":
964			if value != nil {
965				jtv, ok := value.(string)
966				if !ok {
967					return fmt.Errorf("expected SecretAccessKeyType to be of type string, got %T instead", value)
968				}
969				sv.SecretAccessKey = ptr.String(jtv)
970			}
971
972		case "sessionToken":
973			if value != nil {
974				jtv, ok := value.(string)
975				if !ok {
976					return fmt.Errorf("expected SessionTokenType to be of type string, got %T instead", value)
977				}
978				sv.SessionToken = ptr.String(jtv)
979			}
980
981		default:
982			_, _ = key, value
983
984		}
985	}
986	*v = sv
987	return nil
988}
989
990func awsRestjson1_deserializeDocumentRoleInfo(v **types.RoleInfo, value interface{}) error {
991	if v == nil {
992		return fmt.Errorf("unexpected nil of type %T", v)
993	}
994	if value == nil {
995		return nil
996	}
997
998	shape, ok := value.(map[string]interface{})
999	if !ok {
1000		return fmt.Errorf("unexpected JSON type %v", value)
1001	}
1002
1003	var sv *types.RoleInfo
1004	if *v == nil {
1005		sv = &types.RoleInfo{}
1006	} else {
1007		sv = *v
1008	}
1009
1010	for key, value := range shape {
1011		switch key {
1012		case "accountId":
1013			if value != nil {
1014				jtv, ok := value.(string)
1015				if !ok {
1016					return fmt.Errorf("expected AccountIdType to be of type string, got %T instead", value)
1017				}
1018				sv.AccountId = ptr.String(jtv)
1019			}
1020
1021		case "roleName":
1022			if value != nil {
1023				jtv, ok := value.(string)
1024				if !ok {
1025					return fmt.Errorf("expected RoleNameType to be of type string, got %T instead", value)
1026				}
1027				sv.RoleName = ptr.String(jtv)
1028			}
1029
1030		default:
1031			_, _ = key, value
1032
1033		}
1034	}
1035	*v = sv
1036	return nil
1037}
1038
1039func awsRestjson1_deserializeDocumentRoleListType(v *[]types.RoleInfo, value interface{}) error {
1040	if v == nil {
1041		return fmt.Errorf("unexpected nil of type %T", v)
1042	}
1043	if value == nil {
1044		return nil
1045	}
1046
1047	shape, ok := value.([]interface{})
1048	if !ok {
1049		return fmt.Errorf("unexpected JSON type %v", value)
1050	}
1051
1052	var cv []types.RoleInfo
1053	if *v == nil {
1054		cv = []types.RoleInfo{}
1055	} else {
1056		cv = *v
1057	}
1058
1059	for _, value := range shape {
1060		var col types.RoleInfo
1061		destAddr := &col
1062		if err := awsRestjson1_deserializeDocumentRoleInfo(&destAddr, value); err != nil {
1063			return err
1064		}
1065		col = *destAddr
1066		cv = append(cv, col)
1067
1068	}
1069	*v = cv
1070	return nil
1071}
1072
1073func awsRestjson1_deserializeDocumentTooManyRequestsException(v **types.TooManyRequestsException, value interface{}) error {
1074	if v == nil {
1075		return fmt.Errorf("unexpected nil of type %T", v)
1076	}
1077	if value == nil {
1078		return nil
1079	}
1080
1081	shape, ok := value.(map[string]interface{})
1082	if !ok {
1083		return fmt.Errorf("unexpected JSON type %v", value)
1084	}
1085
1086	var sv *types.TooManyRequestsException
1087	if *v == nil {
1088		sv = &types.TooManyRequestsException{}
1089	} else {
1090		sv = *v
1091	}
1092
1093	for key, value := range shape {
1094		switch key {
1095		case "message":
1096			if value != nil {
1097				jtv, ok := value.(string)
1098				if !ok {
1099					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1100				}
1101				sv.Message = ptr.String(jtv)
1102			}
1103
1104		default:
1105			_, _ = key, value
1106
1107		}
1108	}
1109	*v = sv
1110	return nil
1111}
1112
1113func awsRestjson1_deserializeDocumentUnauthorizedException(v **types.UnauthorizedException, value interface{}) error {
1114	if v == nil {
1115		return fmt.Errorf("unexpected nil of type %T", v)
1116	}
1117	if value == nil {
1118		return nil
1119	}
1120
1121	shape, ok := value.(map[string]interface{})
1122	if !ok {
1123		return fmt.Errorf("unexpected JSON type %v", value)
1124	}
1125
1126	var sv *types.UnauthorizedException
1127	if *v == nil {
1128		sv = &types.UnauthorizedException{}
1129	} else {
1130		sv = *v
1131	}
1132
1133	for key, value := range shape {
1134		switch key {
1135		case "message":
1136			if value != nil {
1137				jtv, ok := value.(string)
1138				if !ok {
1139					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1140				}
1141				sv.Message = ptr.String(jtv)
1142			}
1143
1144		default:
1145			_, _ = key, value
1146
1147		}
1148	}
1149	*v = sv
1150	return nil
1151}
1152