diff options
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream')
-rw-r--r-- | vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go | 36 | ||||
-rw-r--r-- | vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go | 2 |
2 files changed, 37 insertions, 1 deletions
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go index 4a4e64c..97937c8 100644 --- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go @@ -94,6 +94,9 @@ func (r *EventReader) ReadEvent() (event interface{}, err error) { switch typ { case EventMessageType: return r.unmarshalEventMessage(msg) + case ExceptionMessageType: + err = r.unmarshalEventException(msg) + return nil, err case ErrorMessageType: return nil, r.unmarshalErrorMessage(msg) default: @@ -122,6 +125,39 @@ func (r *EventReader) unmarshalEventMessage( return ev, nil } +func (r *EventReader) unmarshalEventException( + msg eventstream.Message, +) (err error) { + eventType, err := GetHeaderString(msg, ExceptionTypeHeader) + if err != nil { + return err + } + + ev, err := r.unmarshalerForEventType(eventType) + if err != nil { + return err + } + + err = ev.UnmarshalEvent(r.payloadUnmarshaler, msg) + if err != nil { + return err + } + + var ok bool + err, ok = ev.(error) + if !ok { + err = messageError{ + code: "SerializationError", + msg: fmt.Sprintf( + "event stream exception %s mapped to non-error %T, %v", + eventType, ev, ev, + ), + } + } + + return err +} + func (r *EventReader) unmarshalErrorMessage(msg eventstream.Message) (err error) { var msgErr messageError diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go index d7786f9..e3fc076 100644 --- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go @@ -464,7 +464,7 @@ func (v *TimestampValue) decode(r io.Reader) error { func timeFromEpochMilli(t int64) time.Time { secs := t / 1e3 msec := t % 1e3 - return time.Unix(secs, msec*int64(time.Millisecond)) + return time.Unix(secs, msec*int64(time.Millisecond)).UTC() } // An UUIDValue provides eventstream encoding, and representation of a UUID |