deserializers.go raw

   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  }
1173