src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

deserializers.go (30096B)


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