...

Source file src/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go

Documentation: github.com/aws/aws-sdk-go-v2/service/sso

     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  	smithyhttp "github.com/aws/smithy-go/transport/http"
    17  	"io"
    18  	"io/ioutil"
    19  	"strings"
    20  )
    21  
    22  type awsRestjson1_deserializeOpGetRoleCredentials struct {
    23  }
    24  
    25  func (*awsRestjson1_deserializeOpGetRoleCredentials) ID() string {
    26  	return "OperationDeserializer"
    27  }
    28  
    29  func (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  
    79  func 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  	headerCode := response.Header.Get("X-Amzn-ErrorType")
    90  	if len(headerCode) != 0 {
    91  		errorCode = restjson.SanitizeErrorCode(headerCode)
    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  	jsonCode, 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(headerCode) == 0 && len(jsonCode) != 0 {
   113  		errorCode = restjson.SanitizeErrorCode(jsonCode)
   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  
   142  func 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  
   178  type awsRestjson1_deserializeOpListAccountRoles struct {
   179  }
   180  
   181  func (*awsRestjson1_deserializeOpListAccountRoles) ID() string {
   182  	return "OperationDeserializer"
   183  }
   184  
   185  func (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  
   235  func 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  	headerCode := response.Header.Get("X-Amzn-ErrorType")
   246  	if len(headerCode) != 0 {
   247  		errorCode = restjson.SanitizeErrorCode(headerCode)
   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  	jsonCode, 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(headerCode) == 0 && len(jsonCode) != 0 {
   269  		errorCode = restjson.SanitizeErrorCode(jsonCode)
   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  
   298  func 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  
   343  type awsRestjson1_deserializeOpListAccounts struct {
   344  }
   345  
   346  func (*awsRestjson1_deserializeOpListAccounts) ID() string {
   347  	return "OperationDeserializer"
   348  }
   349  
   350  func (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  
   400  func 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  	headerCode := response.Header.Get("X-Amzn-ErrorType")
   411  	if len(headerCode) != 0 {
   412  		errorCode = restjson.SanitizeErrorCode(headerCode)
   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  	jsonCode, 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(headerCode) == 0 && len(jsonCode) != 0 {
   434  		errorCode = restjson.SanitizeErrorCode(jsonCode)
   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  
   463  func 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  
   508  type awsRestjson1_deserializeOpLogout struct {
   509  }
   510  
   511  func (*awsRestjson1_deserializeOpLogout) ID() string {
   512  	return "OperationDeserializer"
   513  }
   514  
   515  func (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  
   543  func 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  	headerCode := response.Header.Get("X-Amzn-ErrorType")
   554  	if len(headerCode) != 0 {
   555  		errorCode = restjson.SanitizeErrorCode(headerCode)
   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  	jsonCode, 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(headerCode) == 0 && len(jsonCode) != 0 {
   577  		errorCode = restjson.SanitizeErrorCode(jsonCode)
   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  
   603  func 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  
   639  func 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  
   675  func 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  
   711  func 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  
   747  func 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  
   805  func 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  
   839  func 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  
   879  func 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  
   919  func 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  
   990  func 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  
  1039  func 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  
  1073  func 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  
  1113  func 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  

View as plain text