...

Source file src/github.com/aws/smithy-go/encoding/xml/error_utils.go

Documentation: github.com/aws/smithy-go/encoding/xml

     1  package xml
     2  
     3  import (
     4  	"encoding/xml"
     5  	"fmt"
     6  	"io"
     7  )
     8  
     9  // ErrorComponents represents the error response fields
    10  // that will be deserialized from an xml error response body
    11  type ErrorComponents struct {
    12  	Code    string
    13  	Message string
    14  }
    15  
    16  // GetErrorResponseComponents returns the error fields from an xml error response body
    17  func GetErrorResponseComponents(r io.Reader, noErrorWrapping bool) (ErrorComponents, error) {
    18  	if noErrorWrapping {
    19  		var errResponse noWrappedErrorResponse
    20  		if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF {
    21  			return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err)
    22  		}
    23  		return ErrorComponents{
    24  			Code:    errResponse.Code,
    25  			Message: errResponse.Message,
    26  		}, nil
    27  	}
    28  
    29  	var errResponse wrappedErrorResponse
    30  	if err := xml.NewDecoder(r).Decode(&errResponse); err != nil && err != io.EOF {
    31  		return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response: %w", err)
    32  	}
    33  	return ErrorComponents{
    34  		Code:    errResponse.Code,
    35  		Message: errResponse.Message,
    36  	}, nil
    37  }
    38  
    39  // noWrappedErrorResponse represents the error response body with
    40  // no internal <Error></Error wrapping
    41  type noWrappedErrorResponse struct {
    42  	Code    string `xml:"Code"`
    43  	Message string `xml:"Message"`
    44  }
    45  
    46  // wrappedErrorResponse represents the error response body
    47  // wrapped within <Error>...</Error>
    48  type wrappedErrorResponse struct {
    49  	Code    string `xml:"Error>Code"`
    50  	Message string `xml:"Error>Message"`
    51  }
    52  

View as plain text