3
//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/output/ec2.json unmarshal_test.go
9
"github.com/aws/aws-sdk-go/aws/awserr"
10
"github.com/aws/aws-sdk-go/aws/request"
11
"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
14
// Unmarshal unmarshals a response body for the EC2 protocol.
15
func Unmarshal(r *request.Request) {
16
defer r.HTTPResponse.Body.Close()
18
decoder := xml.NewDecoder(r.HTTPResponse.Body)
19
err := xmlutil.UnmarshalXML(r.Data, decoder, "")
21
r.Error = awserr.New("SerializationError", "failed decoding EC2 Query response", err)
27
// UnmarshalMeta unmarshals response headers for the EC2 protocol.
28
func UnmarshalMeta(r *request.Request) {
29
// TODO implement unmarshaling of request IDs
32
type xmlErrorResponse struct {
33
XMLName xml.Name `xml:"Response"`
34
Code string `xml:"Errors>Error>Code"`
35
Message string `xml:"Errors>Error>Message"`
36
RequestID string `xml:"RequestId"`
39
// UnmarshalError unmarshals a response error for the EC2 protocol.
40
func UnmarshalError(r *request.Request) {
41
defer r.HTTPResponse.Body.Close()
43
resp := &xmlErrorResponse{}
44
err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp)
45
if err != nil && err != io.EOF {
46
r.Error = awserr.New("SerializationError", "failed decoding EC2 Query error response", err)
48
r.Error = awserr.NewRequestFailure(
49
awserr.New(resp.Code, resp.Message, nil),
50
r.HTTPResponse.StatusCode,