aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/aws/aws-sdk-go/private/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/private/protocol')
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go144
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go199
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go114
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go23
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go196
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go24
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go166
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go501
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go103
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go75
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go76
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go81
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go36
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go246
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go35
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go66
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go295
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go45
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go225
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go69
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go72
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go21
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go306
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go272
-rw-r--r--vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go148
25 files changed, 0 insertions, 3538 deletions
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go
deleted file mode 100644
index ecc7bf8..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go
+++ /dev/null
@@ -1,144 +0,0 @@
-package eventstream
-
-import (
- "bytes"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "strconv"
-)
-
-type decodedMessage struct {
- rawMessage
- Headers decodedHeaders `json:"headers"`
-}
-type jsonMessage struct {
- Length json.Number `json:"total_length"`
- HeadersLen json.Number `json:"headers_length"`
- PreludeCRC json.Number `json:"prelude_crc"`
- Headers decodedHeaders `json:"headers"`
- Payload []byte `json:"payload"`
- CRC json.Number `json:"message_crc"`
-}
-
-func (d *decodedMessage) UnmarshalJSON(b []byte) (err error) {
- var jsonMsg jsonMessage
- if err = json.Unmarshal(b, &jsonMsg); err != nil {
- return err
- }
-
- d.Length, err = numAsUint32(jsonMsg.Length)
- if err != nil {
- return err
- }
- d.HeadersLen, err = numAsUint32(jsonMsg.HeadersLen)
- if err != nil {
- return err
- }
- d.PreludeCRC, err = numAsUint32(jsonMsg.PreludeCRC)
- if err != nil {
- return err
- }
- d.Headers = jsonMsg.Headers
- d.Payload = jsonMsg.Payload
- d.CRC, err = numAsUint32(jsonMsg.CRC)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func (d *decodedMessage) MarshalJSON() ([]byte, error) {
- jsonMsg := jsonMessage{
- Length: json.Number(strconv.Itoa(int(d.Length))),
- HeadersLen: json.Number(strconv.Itoa(int(d.HeadersLen))),
- PreludeCRC: json.Number(strconv.Itoa(int(d.PreludeCRC))),
- Headers: d.Headers,
- Payload: d.Payload,
- CRC: json.Number(strconv.Itoa(int(d.CRC))),
- }
-
- return json.Marshal(jsonMsg)
-}
-
-func numAsUint32(n json.Number) (uint32, error) {
- v, err := n.Int64()
- if err != nil {
- return 0, fmt.Errorf("failed to get int64 json number, %v", err)
- }
-
- return uint32(v), nil
-}
-
-func (d decodedMessage) Message() Message {
- return Message{
- Headers: Headers(d.Headers),
- Payload: d.Payload,
- }
-}
-
-type decodedHeaders Headers
-
-func (hs *decodedHeaders) UnmarshalJSON(b []byte) error {
- var jsonHeaders []struct {
- Name string `json:"name"`
- Type valueType `json:"type"`
- Value interface{} `json:"value"`
- }
-
- decoder := json.NewDecoder(bytes.NewReader(b))
- decoder.UseNumber()
- if err := decoder.Decode(&jsonHeaders); err != nil {
- return err
- }
-
- var headers Headers
- for _, h := range jsonHeaders {
- value, err := valueFromType(h.Type, h.Value)
- if err != nil {
- return err
- }
- headers.Set(h.Name, value)
- }
- (*hs) = decodedHeaders(headers)
-
- return nil
-}
-
-func valueFromType(typ valueType, val interface{}) (Value, error) {
- switch typ {
- case trueValueType:
- return BoolValue(true), nil
- case falseValueType:
- return BoolValue(false), nil
- case int8ValueType:
- v, err := val.(json.Number).Int64()
- return Int8Value(int8(v)), err
- case int16ValueType:
- v, err := val.(json.Number).Int64()
- return Int16Value(int16(v)), err
- case int32ValueType:
- v, err := val.(json.Number).Int64()
- return Int32Value(int32(v)), err
- case int64ValueType:
- v, err := val.(json.Number).Int64()
- return Int64Value(v), err
- case bytesValueType:
- v, err := base64.StdEncoding.DecodeString(val.(string))
- return BytesValue(v), err
- case stringValueType:
- v, err := base64.StdEncoding.DecodeString(val.(string))
- return StringValue(string(v)), err
- case timestampValueType:
- v, err := val.(json.Number).Int64()
- return TimestampValue(timeFromEpochMilli(v)), err
- case uuidValueType:
- v, err := base64.StdEncoding.DecodeString(val.(string))
- var tv UUIDValue
- copy(tv[:], v)
- return tv, err
- default:
- panic(fmt.Sprintf("unknown type, %s, %T", typ.String(), val))
- }
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go
deleted file mode 100644
index 4b972b2..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go
+++ /dev/null
@@ -1,199 +0,0 @@
-package eventstream
-
-import (
- "bytes"
- "encoding/binary"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "hash"
- "hash/crc32"
- "io"
-
- "github.com/aws/aws-sdk-go/aws"
-)
-
-// Decoder provides decoding of an Event Stream messages.
-type Decoder struct {
- r io.Reader
- logger aws.Logger
-}
-
-// NewDecoder initializes and returns a Decoder for decoding event
-// stream messages from the reader provided.
-func NewDecoder(r io.Reader) *Decoder {
- return &Decoder{
- r: r,
- }
-}
-
-// Decode attempts to decode a single message from the event stream reader.
-// Will return the event stream message, or error if Decode fails to read
-// the message from the stream.
-func (d *Decoder) Decode(payloadBuf []byte) (m Message, err error) {
- reader := d.r
- if d.logger != nil {
- debugMsgBuf := bytes.NewBuffer(nil)
- reader = io.TeeReader(reader, debugMsgBuf)
- defer func() {
- logMessageDecode(d.logger, debugMsgBuf, m, err)
- }()
- }
-
- crc := crc32.New(crc32IEEETable)
- hashReader := io.TeeReader(reader, crc)
-
- prelude, err := decodePrelude(hashReader, crc)
- if err != nil {
- return Message{}, err
- }
-
- if prelude.HeadersLen > 0 {
- lr := io.LimitReader(hashReader, int64(prelude.HeadersLen))
- m.Headers, err = decodeHeaders(lr)
- if err != nil {
- return Message{}, err
- }
- }
-
- if payloadLen := prelude.PayloadLen(); payloadLen > 0 {
- buf, err := decodePayload(payloadBuf, io.LimitReader(hashReader, int64(payloadLen)))
- if err != nil {
- return Message{}, err
- }
- m.Payload = buf
- }
-
- msgCRC := crc.Sum32()
- if err := validateCRC(reader, msgCRC); err != nil {
- return Message{}, err
- }
-
- return m, nil
-}
-
-// UseLogger specifies the Logger that that the decoder should use to log the
-// message decode to.
-func (d *Decoder) UseLogger(logger aws.Logger) {
- d.logger = logger
-}
-
-func logMessageDecode(logger aws.Logger, msgBuf *bytes.Buffer, msg Message, decodeErr error) {
- w := bytes.NewBuffer(nil)
- defer func() { logger.Log(w.String()) }()
-
- fmt.Fprintf(w, "Raw message:\n%s\n",
- hex.Dump(msgBuf.Bytes()))
-
- if decodeErr != nil {
- fmt.Fprintf(w, "Decode error: %v\n", decodeErr)
- return
- }
-
- rawMsg, err := msg.rawMessage()
- if err != nil {
- fmt.Fprintf(w, "failed to create raw message, %v\n", err)
- return
- }
-
- decodedMsg := decodedMessage{
- rawMessage: rawMsg,
- Headers: decodedHeaders(msg.Headers),
- }
-
- fmt.Fprintf(w, "Decoded message:\n")
- encoder := json.NewEncoder(w)
- if err := encoder.Encode(decodedMsg); err != nil {
- fmt.Fprintf(w, "failed to generate decoded message, %v\n", err)
- }
-}
-
-func decodePrelude(r io.Reader, crc hash.Hash32) (messagePrelude, error) {
- var p messagePrelude
-
- var err error
- p.Length, err = decodeUint32(r)
- if err != nil {
- return messagePrelude{}, err
- }
-
- p.HeadersLen, err = decodeUint32(r)
- if err != nil {
- return messagePrelude{}, err
- }
-
- if err := p.ValidateLens(); err != nil {
- return messagePrelude{}, err
- }
-
- preludeCRC := crc.Sum32()
- if err := validateCRC(r, preludeCRC); err != nil {
- return messagePrelude{}, err
- }
-
- p.PreludeCRC = preludeCRC
-
- return p, nil
-}
-
-func decodePayload(buf []byte, r io.Reader) ([]byte, error) {
- w := bytes.NewBuffer(buf[0:0])
-
- _, err := io.Copy(w, r)
- return w.Bytes(), err
-}
-
-func decodeUint8(r io.Reader) (uint8, error) {
- type byteReader interface {
- ReadByte() (byte, error)
- }
-
- if br, ok := r.(byteReader); ok {
- v, err := br.ReadByte()
- return uint8(v), err
- }
-
- var b [1]byte
- _, err := io.ReadFull(r, b[:])
- return uint8(b[0]), err
-}
-func decodeUint16(r io.Reader) (uint16, error) {
- var b [2]byte
- bs := b[:]
- _, err := io.ReadFull(r, bs)
- if err != nil {
- return 0, err
- }
- return binary.BigEndian.Uint16(bs), nil
-}
-func decodeUint32(r io.Reader) (uint32, error) {
- var b [4]byte
- bs := b[:]
- _, err := io.ReadFull(r, bs)
- if err != nil {
- return 0, err
- }
- return binary.BigEndian.Uint32(bs), nil
-}
-func decodeUint64(r io.Reader) (uint64, error) {
- var b [8]byte
- bs := b[:]
- _, err := io.ReadFull(r, bs)
- if err != nil {
- return 0, err
- }
- return binary.BigEndian.Uint64(bs), nil
-}
-
-func validateCRC(r io.Reader, expect uint32) error {
- msgCRC, err := decodeUint32(r)
- if err != nil {
- return err
- }
-
- if msgCRC != expect {
- return ChecksumError{}
- }
-
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go
deleted file mode 100644
index 150a609..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go
+++ /dev/null
@@ -1,114 +0,0 @@
-package eventstream
-
-import (
- "bytes"
- "encoding/binary"
- "hash"
- "hash/crc32"
- "io"
-)
-
-// Encoder provides EventStream message encoding.
-type Encoder struct {
- w io.Writer
-
- headersBuf *bytes.Buffer
-}
-
-// NewEncoder initializes and returns an Encoder to encode Event Stream
-// messages to an io.Writer.
-func NewEncoder(w io.Writer) *Encoder {
- return &Encoder{
- w: w,
- headersBuf: bytes.NewBuffer(nil),
- }
-}
-
-// Encode encodes a single EventStream message to the io.Writer the Encoder
-// was created with. An error is returned if writing the message fails.
-func (e *Encoder) Encode(msg Message) error {
- e.headersBuf.Reset()
-
- err := encodeHeaders(e.headersBuf, msg.Headers)
- if err != nil {
- return err
- }
-
- crc := crc32.New(crc32IEEETable)
- hashWriter := io.MultiWriter(e.w, crc)
-
- headersLen := uint32(e.headersBuf.Len())
- payloadLen := uint32(len(msg.Payload))
-
- if err := encodePrelude(hashWriter, crc, headersLen, payloadLen); err != nil {
- return err
- }
-
- if headersLen > 0 {
- if _, err := io.Copy(hashWriter, e.headersBuf); err != nil {
- return err
- }
- }
-
- if payloadLen > 0 {
- if _, err := hashWriter.Write(msg.Payload); err != nil {
- return err
- }
- }
-
- msgCRC := crc.Sum32()
- return binary.Write(e.w, binary.BigEndian, msgCRC)
-}
-
-func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen uint32) error {
- p := messagePrelude{
- Length: minMsgLen + headersLen + payloadLen,
- HeadersLen: headersLen,
- }
- if err := p.ValidateLens(); err != nil {
- return err
- }
-
- err := binaryWriteFields(w, binary.BigEndian,
- p.Length,
- p.HeadersLen,
- )
- if err != nil {
- return err
- }
-
- p.PreludeCRC = crc.Sum32()
- err = binary.Write(w, binary.BigEndian, p.PreludeCRC)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func encodeHeaders(w io.Writer, headers Headers) error {
- for _, h := range headers {
- hn := headerName{
- Len: uint8(len(h.Name)),
- }
- copy(hn.Name[:hn.Len], h.Name)
- if err := hn.encode(w); err != nil {
- return err
- }
-
- if err := h.Value.encode(w); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func binaryWriteFields(w io.Writer, order binary.ByteOrder, vs ...interface{}) error {
- for _, v := range vs {
- if err := binary.Write(w, order, v); err != nil {
- return err
- }
- }
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go
deleted file mode 100644
index 5481ef3..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/error.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package eventstream
-
-import "fmt"
-
-// LengthError provides the error for items being larger than a maximum length.
-type LengthError struct {
- Part string
- Want int
- Have int
- Value interface{}
-}
-
-func (e LengthError) Error() string {
- return fmt.Sprintf("%s length invalid, %d/%d, %v",
- e.Part, e.Want, e.Have, e.Value)
-}
-
-// ChecksumError provides the error for message checksum invalidation errors.
-type ChecksumError struct{}
-
-func (e ChecksumError) Error() string {
- return "message checksum mismatch"
-}
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
deleted file mode 100644
index 97937c8..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/api.go
+++ /dev/null
@@ -1,196 +0,0 @@
-package eventstreamapi
-
-import (
- "fmt"
- "io"
-
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/private/protocol"
- "github.com/aws/aws-sdk-go/private/protocol/eventstream"
-)
-
-// Unmarshaler provides the interface for unmarshaling a EventStream
-// message into a SDK type.
-type Unmarshaler interface {
- UnmarshalEvent(protocol.PayloadUnmarshaler, eventstream.Message) error
-}
-
-// EventStream headers with specific meaning to async API functionality.
-const (
- MessageTypeHeader = `:message-type` // Identifies type of message.
- EventMessageType = `event`
- ErrorMessageType = `error`
- ExceptionMessageType = `exception`
-
- // Message Events
- EventTypeHeader = `:event-type` // Identifies message event type e.g. "Stats".
-
- // Message Error
- ErrorCodeHeader = `:error-code`
- ErrorMessageHeader = `:error-message`
-
- // Message Exception
- ExceptionTypeHeader = `:exception-type`
-)
-
-// EventReader provides reading from the EventStream of an reader.
-type EventReader struct {
- reader io.ReadCloser
- decoder *eventstream.Decoder
-
- unmarshalerForEventType func(string) (Unmarshaler, error)
- payloadUnmarshaler protocol.PayloadUnmarshaler
-
- payloadBuf []byte
-}
-
-// NewEventReader returns a EventReader built from the reader and unmarshaler
-// provided. Use ReadStream method to start reading from the EventStream.
-func NewEventReader(
- reader io.ReadCloser,
- payloadUnmarshaler protocol.PayloadUnmarshaler,
- unmarshalerForEventType func(string) (Unmarshaler, error),
-) *EventReader {
- return &EventReader{
- reader: reader,
- decoder: eventstream.NewDecoder(reader),
- payloadUnmarshaler: payloadUnmarshaler,
- unmarshalerForEventType: unmarshalerForEventType,
- payloadBuf: make([]byte, 10*1024),
- }
-}
-
-// UseLogger instructs the EventReader to use the logger and log level
-// specified.
-func (r *EventReader) UseLogger(logger aws.Logger, logLevel aws.LogLevelType) {
- if logger != nil && logLevel.Matches(aws.LogDebugWithEventStreamBody) {
- r.decoder.UseLogger(logger)
- }
-}
-
-// ReadEvent attempts to read a message from the EventStream and return the
-// unmarshaled event value that the message is for.
-//
-// For EventStream API errors check if the returned error satisfies the
-// awserr.Error interface to get the error's Code and Message components.
-//
-// EventUnmarshalers called with EventStream messages must take copies of the
-// message's Payload. The payload will is reused between events read.
-func (r *EventReader) ReadEvent() (event interface{}, err error) {
- msg, err := r.decoder.Decode(r.payloadBuf)
- if err != nil {
- return nil, err
- }
- defer func() {
- // Reclaim payload buffer for next message read.
- r.payloadBuf = msg.Payload[0:0]
- }()
-
- typ, err := GetHeaderString(msg, MessageTypeHeader)
- if err != nil {
- return nil, err
- }
-
- 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:
- return nil, fmt.Errorf("unknown eventstream message type, %v", typ)
- }
-}
-
-func (r *EventReader) unmarshalEventMessage(
- msg eventstream.Message,
-) (event interface{}, err error) {
- eventType, err := GetHeaderString(msg, EventTypeHeader)
- if err != nil {
- return nil, err
- }
-
- ev, err := r.unmarshalerForEventType(eventType)
- if err != nil {
- return nil, err
- }
-
- err = ev.UnmarshalEvent(r.payloadUnmarshaler, msg)
- if err != nil {
- return nil, err
- }
-
- 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
-
- msgErr.code, err = GetHeaderString(msg, ErrorCodeHeader)
- if err != nil {
- return err
- }
-
- msgErr.msg, err = GetHeaderString(msg, ErrorMessageHeader)
- if err != nil {
- return err
- }
-
- return msgErr
-}
-
-// Close closes the EventReader's EventStream reader.
-func (r *EventReader) Close() error {
- return r.reader.Close()
-}
-
-// GetHeaderString returns the value of the header as a string. If the header
-// is not set or the value is not a string an error will be returned.
-func GetHeaderString(msg eventstream.Message, headerName string) (string, error) {
- headerVal := msg.Headers.Get(headerName)
- if headerVal == nil {
- return "", fmt.Errorf("error header %s not present", headerName)
- }
-
- v, ok := headerVal.Get().(string)
- if !ok {
- return "", fmt.Errorf("error header value is not a string, %T", headerVal)
- }
-
- return v, nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go
deleted file mode 100644
index 5ea5a98..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package eventstreamapi
-
-import "fmt"
-
-type messageError struct {
- code string
- msg string
-}
-
-func (e messageError) Code() string {
- return e.code
-}
-
-func (e messageError) Message() string {
- return e.msg
-}
-
-func (e messageError) Error() string {
- return fmt.Sprintf("%s: %s", e.code, e.msg)
-}
-
-func (e messageError) OrigErr() error {
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go
deleted file mode 100644
index 3b44dde..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header.go
+++ /dev/null
@@ -1,166 +0,0 @@
-package eventstream
-
-import (
- "encoding/binary"
- "fmt"
- "io"
-)
-
-// Headers are a collection of EventStream header values.
-type Headers []Header
-
-// Header is a single EventStream Key Value header pair.
-type Header struct {
- Name string
- Value Value
-}
-
-// Set associates the name with a value. If the header name already exists in
-// the Headers the value will be replaced with the new one.
-func (hs *Headers) Set(name string, value Value) {
- var i int
- for ; i < len(*hs); i++ {
- if (*hs)[i].Name == name {
- (*hs)[i].Value = value
- return
- }
- }
-
- *hs = append(*hs, Header{
- Name: name, Value: value,
- })
-}
-
-// Get returns the Value associated with the header. Nil is returned if the
-// value does not exist.
-func (hs Headers) Get(name string) Value {
- for i := 0; i < len(hs); i++ {
- if h := hs[i]; h.Name == name {
- return h.Value
- }
- }
- return nil
-}
-
-// Del deletes the value in the Headers if it exists.
-func (hs *Headers) Del(name string) {
- for i := 0; i < len(*hs); i++ {
- if (*hs)[i].Name == name {
- copy((*hs)[i:], (*hs)[i+1:])
- (*hs) = (*hs)[:len(*hs)-1]
- }
- }
-}
-
-func decodeHeaders(r io.Reader) (Headers, error) {
- hs := Headers{}
-
- for {
- name, err := decodeHeaderName(r)
- if err != nil {
- if err == io.EOF {
- // EOF while getting header name means no more headers
- break
- }
- return nil, err
- }
-
- value, err := decodeHeaderValue(r)
- if err != nil {
- return nil, err
- }
-
- hs.Set(name, value)
- }
-
- return hs, nil
-}
-
-func decodeHeaderName(r io.Reader) (string, error) {
- var n headerName
-
- var err error
- n.Len, err = decodeUint8(r)
- if err != nil {
- return "", err
- }
-
- name := n.Name[:n.Len]
- if _, err := io.ReadFull(r, name); err != nil {
- return "", err
- }
-
- return string(name), nil
-}
-
-func decodeHeaderValue(r io.Reader) (Value, error) {
- var raw rawValue
-
- typ, err := decodeUint8(r)
- if err != nil {
- return nil, err
- }
- raw.Type = valueType(typ)
-
- var v Value
-
- switch raw.Type {
- case trueValueType:
- v = BoolValue(true)
- case falseValueType:
- v = BoolValue(false)
- case int8ValueType:
- var tv Int8Value
- err = tv.decode(r)
- v = tv
- case int16ValueType:
- var tv Int16Value
- err = tv.decode(r)
- v = tv
- case int32ValueType:
- var tv Int32Value
- err = tv.decode(r)
- v = tv
- case int64ValueType:
- var tv Int64Value
- err = tv.decode(r)
- v = tv
- case bytesValueType:
- var tv BytesValue
- err = tv.decode(r)
- v = tv
- case stringValueType:
- var tv StringValue
- err = tv.decode(r)
- v = tv
- case timestampValueType:
- var tv TimestampValue
- err = tv.decode(r)
- v = tv
- case uuidValueType:
- var tv UUIDValue
- err = tv.decode(r)
- v = tv
- default:
- panic(fmt.Sprintf("unknown value type %d", raw.Type))
- }
-
- // Error could be EOF, let caller deal with it
- return v, err
-}
-
-const maxHeaderNameLen = 255
-
-type headerName struct {
- Len uint8
- Name [maxHeaderNameLen]byte
-}
-
-func (v headerName) encode(w io.Writer) error {
- if err := binary.Write(w, binary.BigEndian, v.Len); err != nil {
- return err
- }
-
- _, err := w.Write(v.Name[:v.Len])
- return err
-}
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
deleted file mode 100644
index e3fc076..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go
+++ /dev/null
@@ -1,501 +0,0 @@
-package eventstream
-
-import (
- "encoding/base64"
- "encoding/binary"
- "fmt"
- "io"
- "strconv"
- "time"
-)
-
-const maxHeaderValueLen = 1<<15 - 1 // 2^15-1 or 32KB - 1
-
-// valueType is the EventStream header value type.
-type valueType uint8
-
-// Header value types
-const (
- trueValueType valueType = iota
- falseValueType
- int8ValueType // Byte
- int16ValueType // Short
- int32ValueType // Integer
- int64ValueType // Long
- bytesValueType
- stringValueType
- timestampValueType
- uuidValueType
-)
-
-func (t valueType) String() string {
- switch t {
- case trueValueType:
- return "bool"
- case falseValueType:
- return "bool"
- case int8ValueType:
- return "int8"
- case int16ValueType:
- return "int16"
- case int32ValueType:
- return "int32"
- case int64ValueType:
- return "int64"
- case bytesValueType:
- return "byte_array"
- case stringValueType:
- return "string"
- case timestampValueType:
- return "timestamp"
- case uuidValueType:
- return "uuid"
- default:
- return fmt.Sprintf("unknown value type %d", uint8(t))
- }
-}
-
-type rawValue struct {
- Type valueType
- Len uint16 // Only set for variable length slices
- Value []byte // byte representation of value, BigEndian encoding.
-}
-
-func (r rawValue) encodeScalar(w io.Writer, v interface{}) error {
- return binaryWriteFields(w, binary.BigEndian,
- r.Type,
- v,
- )
-}
-
-func (r rawValue) encodeFixedSlice(w io.Writer, v []byte) error {
- binary.Write(w, binary.BigEndian, r.Type)
-
- _, err := w.Write(v)
- return err
-}
-
-func (r rawValue) encodeBytes(w io.Writer, v []byte) error {
- if len(v) > maxHeaderValueLen {
- return LengthError{
- Part: "header value",
- Want: maxHeaderValueLen, Have: len(v),
- Value: v,
- }
- }
- r.Len = uint16(len(v))
-
- err := binaryWriteFields(w, binary.BigEndian,
- r.Type,
- r.Len,
- )
- if err != nil {
- return err
- }
-
- _, err = w.Write(v)
- return err
-}
-
-func (r rawValue) encodeString(w io.Writer, v string) error {
- if len(v) > maxHeaderValueLen {
- return LengthError{
- Part: "header value",
- Want: maxHeaderValueLen, Have: len(v),
- Value: v,
- }
- }
- r.Len = uint16(len(v))
-
- type stringWriter interface {
- WriteString(string) (int, error)
- }
-
- err := binaryWriteFields(w, binary.BigEndian,
- r.Type,
- r.Len,
- )
- if err != nil {
- return err
- }
-
- if sw, ok := w.(stringWriter); ok {
- _, err = sw.WriteString(v)
- } else {
- _, err = w.Write([]byte(v))
- }
-
- return err
-}
-
-func decodeFixedBytesValue(r io.Reader, buf []byte) error {
- _, err := io.ReadFull(r, buf)
- return err
-}
-
-func decodeBytesValue(r io.Reader) ([]byte, error) {
- var raw rawValue
- var err error
- raw.Len, err = decodeUint16(r)
- if err != nil {
- return nil, err
- }
-
- buf := make([]byte, raw.Len)
- _, err = io.ReadFull(r, buf)
- if err != nil {
- return nil, err
- }
-
- return buf, nil
-}
-
-func decodeStringValue(r io.Reader) (string, error) {
- v, err := decodeBytesValue(r)
- return string(v), err
-}
-
-// Value represents the abstract header value.
-type Value interface {
- Get() interface{}
- String() string
- valueType() valueType
- encode(io.Writer) error
-}
-
-// An BoolValue provides eventstream encoding, and representation
-// of a Go bool value.
-type BoolValue bool
-
-// Get returns the underlying type
-func (v BoolValue) Get() interface{} {
- return bool(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (v BoolValue) valueType() valueType {
- if v {
- return trueValueType
- }
- return falseValueType
-}
-
-func (v BoolValue) String() string {
- return strconv.FormatBool(bool(v))
-}
-
-// encode encodes the BoolValue into an eventstream binary value
-// representation.
-func (v BoolValue) encode(w io.Writer) error {
- return binary.Write(w, binary.BigEndian, v.valueType())
-}
-
-// An Int8Value provides eventstream encoding, and representation of a Go
-// int8 value.
-type Int8Value int8
-
-// Get returns the underlying value.
-func (v Int8Value) Get() interface{} {
- return int8(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (Int8Value) valueType() valueType {
- return int8ValueType
-}
-
-func (v Int8Value) String() string {
- return fmt.Sprintf("0x%02x", int8(v))
-}
-
-// encode encodes the Int8Value into an eventstream binary value
-// representation.
-func (v Int8Value) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
-
- return raw.encodeScalar(w, v)
-}
-
-func (v *Int8Value) decode(r io.Reader) error {
- n, err := decodeUint8(r)
- if err != nil {
- return err
- }
-
- *v = Int8Value(n)
- return nil
-}
-
-// An Int16Value provides eventstream encoding, and representation of a Go
-// int16 value.
-type Int16Value int16
-
-// Get returns the underlying value.
-func (v Int16Value) Get() interface{} {
- return int16(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (Int16Value) valueType() valueType {
- return int16ValueType
-}
-
-func (v Int16Value) String() string {
- return fmt.Sprintf("0x%04x", int16(v))
-}
-
-// encode encodes the Int16Value into an eventstream binary value
-// representation.
-func (v Int16Value) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
- return raw.encodeScalar(w, v)
-}
-
-func (v *Int16Value) decode(r io.Reader) error {
- n, err := decodeUint16(r)
- if err != nil {
- return err
- }
-
- *v = Int16Value(n)
- return nil
-}
-
-// An Int32Value provides eventstream encoding, and representation of a Go
-// int32 value.
-type Int32Value int32
-
-// Get returns the underlying value.
-func (v Int32Value) Get() interface{} {
- return int32(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (Int32Value) valueType() valueType {
- return int32ValueType
-}
-
-func (v Int32Value) String() string {
- return fmt.Sprintf("0x%08x", int32(v))
-}
-
-// encode encodes the Int32Value into an eventstream binary value
-// representation.
-func (v Int32Value) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
- return raw.encodeScalar(w, v)
-}
-
-func (v *Int32Value) decode(r io.Reader) error {
- n, err := decodeUint32(r)
- if err != nil {
- return err
- }
-
- *v = Int32Value(n)
- return nil
-}
-
-// An Int64Value provides eventstream encoding, and representation of a Go
-// int64 value.
-type Int64Value int64
-
-// Get returns the underlying value.
-func (v Int64Value) Get() interface{} {
- return int64(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (Int64Value) valueType() valueType {
- return int64ValueType
-}
-
-func (v Int64Value) String() string {
- return fmt.Sprintf("0x%016x", int64(v))
-}
-
-// encode encodes the Int64Value into an eventstream binary value
-// representation.
-func (v Int64Value) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
- return raw.encodeScalar(w, v)
-}
-
-func (v *Int64Value) decode(r io.Reader) error {
- n, err := decodeUint64(r)
- if err != nil {
- return err
- }
-
- *v = Int64Value(n)
- return nil
-}
-
-// An BytesValue provides eventstream encoding, and representation of a Go
-// byte slice.
-type BytesValue []byte
-
-// Get returns the underlying value.
-func (v BytesValue) Get() interface{} {
- return []byte(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (BytesValue) valueType() valueType {
- return bytesValueType
-}
-
-func (v BytesValue) String() string {
- return base64.StdEncoding.EncodeToString([]byte(v))
-}
-
-// encode encodes the BytesValue into an eventstream binary value
-// representation.
-func (v BytesValue) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
-
- return raw.encodeBytes(w, []byte(v))
-}
-
-func (v *BytesValue) decode(r io.Reader) error {
- buf, err := decodeBytesValue(r)
- if err != nil {
- return err
- }
-
- *v = BytesValue(buf)
- return nil
-}
-
-// An StringValue provides eventstream encoding, and representation of a Go
-// string.
-type StringValue string
-
-// Get returns the underlying value.
-func (v StringValue) Get() interface{} {
- return string(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (StringValue) valueType() valueType {
- return stringValueType
-}
-
-func (v StringValue) String() string {
- return string(v)
-}
-
-// encode encodes the StringValue into an eventstream binary value
-// representation.
-func (v StringValue) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
-
- return raw.encodeString(w, string(v))
-}
-
-func (v *StringValue) decode(r io.Reader) error {
- s, err := decodeStringValue(r)
- if err != nil {
- return err
- }
-
- *v = StringValue(s)
- return nil
-}
-
-// An TimestampValue provides eventstream encoding, and representation of a Go
-// timestamp.
-type TimestampValue time.Time
-
-// Get returns the underlying value.
-func (v TimestampValue) Get() interface{} {
- return time.Time(v)
-}
-
-// valueType returns the EventStream header value type value.
-func (TimestampValue) valueType() valueType {
- return timestampValueType
-}
-
-func (v TimestampValue) epochMilli() int64 {
- nano := time.Time(v).UnixNano()
- msec := nano / int64(time.Millisecond)
- return msec
-}
-
-func (v TimestampValue) String() string {
- msec := v.epochMilli()
- return strconv.FormatInt(msec, 10)
-}
-
-// encode encodes the TimestampValue into an eventstream binary value
-// representation.
-func (v TimestampValue) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
-
- msec := v.epochMilli()
- return raw.encodeScalar(w, msec)
-}
-
-func (v *TimestampValue) decode(r io.Reader) error {
- n, err := decodeUint64(r)
- if err != nil {
- return err
- }
-
- *v = TimestampValue(timeFromEpochMilli(int64(n)))
- return nil
-}
-
-func timeFromEpochMilli(t int64) time.Time {
- secs := t / 1e3
- msec := t % 1e3
- return time.Unix(secs, msec*int64(time.Millisecond)).UTC()
-}
-
-// An UUIDValue provides eventstream encoding, and representation of a UUID
-// value.
-type UUIDValue [16]byte
-
-// Get returns the underlying value.
-func (v UUIDValue) Get() interface{} {
- return v[:]
-}
-
-// valueType returns the EventStream header value type value.
-func (UUIDValue) valueType() valueType {
- return uuidValueType
-}
-
-func (v UUIDValue) String() string {
- return fmt.Sprintf(`%X-%X-%X-%X-%X`, v[0:4], v[4:6], v[6:8], v[8:10], v[10:])
-}
-
-// encode encodes the UUIDValue into an eventstream binary value
-// representation.
-func (v UUIDValue) encode(w io.Writer) error {
- raw := rawValue{
- Type: v.valueType(),
- }
-
- return raw.encodeFixedSlice(w, v[:])
-}
-
-func (v *UUIDValue) decode(r io.Reader) error {
- tv := (*v)[:]
- return decodeFixedBytesValue(r, tv)
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go
deleted file mode 100644
index 2dc012a..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go
+++ /dev/null
@@ -1,103 +0,0 @@
-package eventstream
-
-import (
- "bytes"
- "encoding/binary"
- "hash/crc32"
-)
-
-const preludeLen = 8
-const preludeCRCLen = 4
-const msgCRCLen = 4
-const minMsgLen = preludeLen + preludeCRCLen + msgCRCLen
-const maxPayloadLen = 1024 * 1024 * 16 // 16MB
-const maxHeadersLen = 1024 * 128 // 128KB
-const maxMsgLen = minMsgLen + maxHeadersLen + maxPayloadLen
-
-var crc32IEEETable = crc32.MakeTable(crc32.IEEE)
-
-// A Message provides the eventstream message representation.
-type Message struct {
- Headers Headers
- Payload []byte
-}
-
-func (m *Message) rawMessage() (rawMessage, error) {
- var raw rawMessage
-
- if len(m.Headers) > 0 {
- var headers bytes.Buffer
- if err := encodeHeaders(&headers, m.Headers); err != nil {
- return rawMessage{}, err
- }
- raw.Headers = headers.Bytes()
- raw.HeadersLen = uint32(len(raw.Headers))
- }
-
- raw.Length = raw.HeadersLen + uint32(len(m.Payload)) + minMsgLen
-
- hash := crc32.New(crc32IEEETable)
- binaryWriteFields(hash, binary.BigEndian, raw.Length, raw.HeadersLen)
- raw.PreludeCRC = hash.Sum32()
-
- binaryWriteFields(hash, binary.BigEndian, raw.PreludeCRC)
-
- if raw.HeadersLen > 0 {
- hash.Write(raw.Headers)
- }
-
- // Read payload bytes and update hash for it as well.
- if len(m.Payload) > 0 {
- raw.Payload = m.Payload
- hash.Write(raw.Payload)
- }
-
- raw.CRC = hash.Sum32()
-
- return raw, nil
-}
-
-type messagePrelude struct {
- Length uint32
- HeadersLen uint32
- PreludeCRC uint32
-}
-
-func (p messagePrelude) PayloadLen() uint32 {
- return p.Length - p.HeadersLen - minMsgLen
-}
-
-func (p messagePrelude) ValidateLens() error {
- if p.Length == 0 || p.Length > maxMsgLen {
- return LengthError{
- Part: "message prelude",
- Want: maxMsgLen,
- Have: int(p.Length),
- }
- }
- if p.HeadersLen > maxHeadersLen {
- return LengthError{
- Part: "message headers",
- Want: maxHeadersLen,
- Have: int(p.HeadersLen),
- }
- }
- if payloadLen := p.PayloadLen(); payloadLen > maxPayloadLen {
- return LengthError{
- Part: "message payload",
- Want: maxPayloadLen,
- Have: int(payloadLen),
- }
- }
-
- return nil
-}
-
-type rawMessage struct {
- messagePrelude
-
- Headers []byte
- Payload []byte
-
- CRC uint32
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go
deleted file mode 100644
index 53831df..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package protocol
-
-import (
- "crypto/rand"
- "fmt"
- "reflect"
-)
-
-// RandReader is the random reader the protocol package will use to read
-// random bytes from. This is exported for testing, and should not be used.
-var RandReader = rand.Reader
-
-const idempotencyTokenFillTag = `idempotencyToken`
-
-// CanSetIdempotencyToken returns true if the struct field should be
-// automatically populated with a Idempotency token.
-//
-// Only *string and string type fields that are tagged with idempotencyToken
-// which are not already set can be auto filled.
-func CanSetIdempotencyToken(v reflect.Value, f reflect.StructField) bool {
- switch u := v.Interface().(type) {
- // To auto fill an Idempotency token the field must be a string,
- // tagged for auto fill, and have a zero value.
- case *string:
- return u == nil && len(f.Tag.Get(idempotencyTokenFillTag)) != 0
- case string:
- return len(u) == 0 && len(f.Tag.Get(idempotencyTokenFillTag)) != 0
- }
-
- return false
-}
-
-// GetIdempotencyToken returns a randomly generated idempotency token.
-func GetIdempotencyToken() string {
- b := make([]byte, 16)
- RandReader.Read(b)
-
- return UUIDVersion4(b)
-}
-
-// SetIdempotencyToken will set the value provided with a Idempotency Token.
-// Given that the value can be set. Will panic if value is not setable.
-func SetIdempotencyToken(v reflect.Value) {
- if v.Kind() == reflect.Ptr {
- if v.IsNil() && v.CanSet() {
- v.Set(reflect.New(v.Type().Elem()))
- }
- v = v.Elem()
- }
- v = reflect.Indirect(v)
-
- if !v.CanSet() {
- panic(fmt.Sprintf("unable to set idempotnecy token %v", v))
- }
-
- b := make([]byte, 16)
- _, err := rand.Read(b)
- if err != nil {
- // TODO handle error
- return
- }
-
- v.Set(reflect.ValueOf(UUIDVersion4(b)))
-}
-
-// UUIDVersion4 returns a Version 4 random UUID from the byte slice provided
-func UUIDVersion4(u []byte) string {
- // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29
- // 13th character is "4"
- u[6] = (u[6] | 0x40) & 0x4F
- // 17th character is "8", "9", "a", or "b"
- u[8] = (u[8] | 0x80) & 0xBF
-
- return fmt.Sprintf(`%X-%X-%X-%X-%X`, u[0:4], u[4:6], u[6:8], u[8:10], u[10:])
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go
deleted file mode 100644
index 776d110..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go
+++ /dev/null
@@ -1,76 +0,0 @@
-package protocol
-
-import (
- "encoding/base64"
- "encoding/json"
- "fmt"
- "strconv"
-
- "github.com/aws/aws-sdk-go/aws"
-)
-
-// EscapeMode is the mode that should be use for escaping a value
-type EscapeMode uint
-
-// The modes for escaping a value before it is marshaled, and unmarshaled.
-const (
- NoEscape EscapeMode = iota
- Base64Escape
- QuotedEscape
-)
-
-// EncodeJSONValue marshals the value into a JSON string, and optionally base64
-// encodes the string before returning it.
-//
-// Will panic if the escape mode is unknown.
-func EncodeJSONValue(v aws.JSONValue, escape EscapeMode) (string, error) {
- b, err := json.Marshal(v)
- if err != nil {
- return "", err
- }
-
- switch escape {
- case NoEscape:
- return string(b), nil
- case Base64Escape:
- return base64.StdEncoding.EncodeToString(b), nil
- case QuotedEscape:
- return strconv.Quote(string(b)), nil
- }
-
- panic(fmt.Sprintf("EncodeJSONValue called with unknown EscapeMode, %v", escape))
-}
-
-// DecodeJSONValue will attempt to decode the string input as a JSONValue.
-// Optionally decoding base64 the value first before JSON unmarshaling.
-//
-// Will panic if the escape mode is unknown.
-func DecodeJSONValue(v string, escape EscapeMode) (aws.JSONValue, error) {
- var b []byte
- var err error
-
- switch escape {
- case NoEscape:
- b = []byte(v)
- case Base64Escape:
- b, err = base64.StdEncoding.DecodeString(v)
- case QuotedEscape:
- var u string
- u, err = strconv.Unquote(v)
- b = []byte(u)
- default:
- panic(fmt.Sprintf("DecodeJSONValue called with unknown EscapeMode, %v", escape))
- }
-
- if err != nil {
- return nil, err
- }
-
- m := aws.JSONValue{}
- err = json.Unmarshal(b, &m)
- if err != nil {
- return nil, err
- }
-
- return m, nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go
deleted file mode 100644
index e21614a..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go
+++ /dev/null
@@ -1,81 +0,0 @@
-package protocol
-
-import (
- "io"
- "io/ioutil"
- "net/http"
-
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/aws/client/metadata"
- "github.com/aws/aws-sdk-go/aws/request"
-)
-
-// PayloadUnmarshaler provides the interface for unmarshaling a payload's
-// reader into a SDK shape.
-type PayloadUnmarshaler interface {
- UnmarshalPayload(io.Reader, interface{}) error
-}
-
-// HandlerPayloadUnmarshal implements the PayloadUnmarshaler from a
-// HandlerList. This provides the support for unmarshaling a payload reader to
-// a shape without needing a SDK request first.
-type HandlerPayloadUnmarshal struct {
- Unmarshalers request.HandlerList
-}
-
-// UnmarshalPayload unmarshals the io.Reader payload into the SDK shape using
-// the Unmarshalers HandlerList provided. Returns an error if unable
-// unmarshaling fails.
-func (h HandlerPayloadUnmarshal) UnmarshalPayload(r io.Reader, v interface{}) error {
- req := &request.Request{
- HTTPRequest: &http.Request{},
- HTTPResponse: &http.Response{
- StatusCode: 200,
- Header: http.Header{},
- Body: ioutil.NopCloser(r),
- },
- Data: v,
- }
-
- h.Unmarshalers.Run(req)
-
- return req.Error
-}
-
-// PayloadMarshaler provides the interface for marshaling a SDK shape into and
-// io.Writer.
-type PayloadMarshaler interface {
- MarshalPayload(io.Writer, interface{}) error
-}
-
-// HandlerPayloadMarshal implements the PayloadMarshaler from a HandlerList.
-// This provides support for marshaling a SDK shape into an io.Writer without
-// needing a SDK request first.
-type HandlerPayloadMarshal struct {
- Marshalers request.HandlerList
-}
-
-// MarshalPayload marshals the SDK shape into the io.Writer using the
-// Marshalers HandlerList provided. Returns an error if unable if marshal
-// fails.
-func (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface{}) error {
- req := request.New(
- aws.Config{},
- metadata.ClientInfo{},
- request.Handlers{},
- nil,
- &request.Operation{HTTPMethod: "GET"},
- v,
- nil,
- )
-
- h.Marshalers.Run(req)
-
- if req.Error != nil {
- return req.Error
- }
-
- io.Copy(w, req.GetBody())
-
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go
deleted file mode 100644
index 60e5b09..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// Package query provides serialization of AWS query requests, and responses.
-package query
-
-//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/query.json build_test.go
-
-import (
- "net/url"
-
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/private/protocol/query/queryutil"
-)
-
-// BuildHandler is a named request handler for building query protocol requests
-var BuildHandler = request.NamedHandler{Name: "awssdk.query.Build", Fn: Build}
-
-// Build builds a request for an AWS Query service.
-func Build(r *request.Request) {
- body := url.Values{
- "Action": {r.Operation.Name},
- "Version": {r.ClientInfo.APIVersion},
- }
- if err := queryutil.Parse(body, r.Params, false); err != nil {
- r.Error = awserr.New("SerializationError", "failed encoding Query request", err)
- return
- }
-
- if !r.IsPresigned() {
- r.HTTPRequest.Method = "POST"
- r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
- r.SetBufferBody([]byte(body.Encode()))
- } else { // This is a pre-signed request
- r.HTTPRequest.Method = "GET"
- r.HTTPRequest.URL.RawQuery = body.Encode()
- }
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go
deleted file mode 100644
index 75866d0..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go
+++ /dev/null
@@ -1,246 +0,0 @@
-package queryutil
-
-import (
- "encoding/base64"
- "fmt"
- "net/url"
- "reflect"
- "sort"
- "strconv"
- "strings"
- "time"
-
- "github.com/aws/aws-sdk-go/private/protocol"
-)
-
-// Parse parses an object i and fills a url.Values object. The isEC2 flag
-// indicates if this is the EC2 Query sub-protocol.
-func Parse(body url.Values, i interface{}, isEC2 bool) error {
- q := queryParser{isEC2: isEC2}
- return q.parseValue(body, reflect.ValueOf(i), "", "")
-}
-
-func elemOf(value reflect.Value) reflect.Value {
- for value.Kind() == reflect.Ptr {
- value = value.Elem()
- }
- return value
-}
-
-type queryParser struct {
- isEC2 bool
-}
-
-func (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
- value = elemOf(value)
-
- // no need to handle zero values
- if !value.IsValid() {
- return nil
- }
-
- t := tag.Get("type")
- if t == "" {
- switch value.Kind() {
- case reflect.Struct:
- t = "structure"
- case reflect.Slice:
- t = "list"
- case reflect.Map:
- t = "map"
- }
- }
-
- switch t {
- case "structure":
- return q.parseStruct(v, value, prefix)
- case "list":
- return q.parseList(v, value, prefix, tag)
- case "map":
- return q.parseMap(v, value, prefix, tag)
- default:
- return q.parseScalar(v, value, prefix, tag)
- }
-}
-
-func (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error {
- if !value.IsValid() {
- return nil
- }
-
- t := value.Type()
- for i := 0; i < value.NumField(); i++ {
- elemValue := elemOf(value.Field(i))
- field := t.Field(i)
-
- if field.PkgPath != "" {
- continue // ignore unexported fields
- }
- if field.Tag.Get("ignore") != "" {
- continue
- }
-
- if protocol.CanSetIdempotencyToken(value.Field(i), field) {
- token := protocol.GetIdempotencyToken()
- elemValue = reflect.ValueOf(token)
- }
-
- var name string
- if q.isEC2 {
- name = field.Tag.Get("queryName")
- }
- if name == "" {
- if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
- name = field.Tag.Get("locationNameList")
- } else if locName := field.Tag.Get("locationName"); locName != "" {
- name = locName
- }
- if name != "" && q.isEC2 {
- name = strings.ToUpper(name[0:1]) + name[1:]
- }
- }
- if name == "" {
- name = field.Name
- }
-
- if prefix != "" {
- name = prefix + "." + name
- }
-
- if err := q.parseValue(v, elemValue, name, field.Tag); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
- // If it's empty, generate an empty value
- if !value.IsNil() && value.Len() == 0 {
- v.Set(prefix, "")
- return nil
- }
-
- if _, ok := value.Interface().([]byte); ok {
- return q.parseScalar(v, value, prefix, tag)
- }
-
- // check for unflattened list member
- if !q.isEC2 && tag.Get("flattened") == "" {
- if listName := tag.Get("locationNameList"); listName == "" {
- prefix += ".member"
- } else {
- prefix += "." + listName
- }
- }
-
- for i := 0; i < value.Len(); i++ {
- slicePrefix := prefix
- if slicePrefix == "" {
- slicePrefix = strconv.Itoa(i + 1)
- } else {
- slicePrefix = slicePrefix + "." + strconv.Itoa(i+1)
- }
- if err := q.parseValue(v, value.Index(i), slicePrefix, ""); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error {
- // If it's empty, generate an empty value
- if !value.IsNil() && value.Len() == 0 {
- v.Set(prefix, "")
- return nil
- }
-
- // check for unflattened list member
- if !q.isEC2 && tag.Get("flattened") == "" {
- prefix += ".entry"
- }
-
- // sort keys for improved serialization consistency.
- // this is not strictly necessary for protocol support.
- mapKeyValues := value.MapKeys()
- mapKeys := map[string]reflect.Value{}
- mapKeyNames := make([]string, len(mapKeyValues))
- for i, mapKey := range mapKeyValues {
- name := mapKey.String()
- mapKeys[name] = mapKey
- mapKeyNames[i] = name
- }
- sort.Strings(mapKeyNames)
-
- for i, mapKeyName := range mapKeyNames {
- mapKey := mapKeys[mapKeyName]
- mapValue := value.MapIndex(mapKey)
-
- kname := tag.Get("locationNameKey")
- if kname == "" {
- kname = "key"
- }
- vname := tag.Get("locationNameValue")
- if vname == "" {
- vname = "value"
- }
-
- // serialize key
- var keyName string
- if prefix == "" {
- keyName = strconv.Itoa(i+1) + "." + kname
- } else {
- keyName = prefix + "." + strconv.Itoa(i+1) + "." + kname
- }
-
- if err := q.parseValue(v, mapKey, keyName, ""); err != nil {
- return err
- }
-
- // serialize value
- var valueName string
- if prefix == "" {
- valueName = strconv.Itoa(i+1) + "." + vname
- } else {
- valueName = prefix + "." + strconv.Itoa(i+1) + "." + vname
- }
-
- if err := q.parseValue(v, mapValue, valueName, ""); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error {
- switch value := r.Interface().(type) {
- case string:
- v.Set(name, value)
- case []byte:
- if !r.IsNil() {
- v.Set(name, base64.StdEncoding.EncodeToString(value))
- }
- case bool:
- v.Set(name, strconv.FormatBool(value))
- case int64:
- v.Set(name, strconv.FormatInt(value, 10))
- case int:
- v.Set(name, strconv.Itoa(value))
- case float64:
- v.Set(name, strconv.FormatFloat(value, 'f', -1, 64))
- case float32:
- v.Set(name, strconv.FormatFloat(float64(value), 'f', -1, 32))
- case time.Time:
- const ISO8601UTC = "2006-01-02T15:04:05Z"
- format := tag.Get("timestampFormat")
- if len(format) == 0 {
- format = protocol.ISO8601TimeFormatName
- }
-
- v.Set(name, protocol.FormatTime(format, value))
- default:
- return fmt.Errorf("unsupported value for param %s: %v (%s)", name, r.Interface(), r.Type().Name())
- }
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
deleted file mode 100644
index e0f4d5a..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package query
-
-//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/query.json unmarshal_test.go
-
-import (
- "encoding/xml"
-
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-)
-
-// UnmarshalHandler is a named request handler for unmarshaling query protocol requests
-var UnmarshalHandler = request.NamedHandler{Name: "awssdk.query.Unmarshal", Fn: Unmarshal}
-
-// UnmarshalMetaHandler is a named request handler for unmarshaling query protocol request metadata
-var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.query.UnmarshalMeta", Fn: UnmarshalMeta}
-
-// Unmarshal unmarshals a response for an AWS Query service.
-func Unmarshal(r *request.Request) {
- defer r.HTTPResponse.Body.Close()
- if r.DataFilled() {
- decoder := xml.NewDecoder(r.HTTPResponse.Body)
- err := xmlutil.UnmarshalXML(r.Data, decoder, r.Operation.Name+"Result")
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed decoding Query response", err)
- return
- }
- }
-}
-
-// UnmarshalMeta unmarshals header response values for an AWS Query service.
-func UnmarshalMeta(r *request.Request) {
- r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid")
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
deleted file mode 100644
index f214296..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package query
-
-import (
- "encoding/xml"
- "io/ioutil"
-
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
-)
-
-type xmlErrorResponse struct {
- XMLName xml.Name `xml:"ErrorResponse"`
- Code string `xml:"Error>Code"`
- Message string `xml:"Error>Message"`
- RequestID string `xml:"RequestId"`
-}
-
-type xmlServiceUnavailableResponse struct {
- XMLName xml.Name `xml:"ServiceUnavailableException"`
-}
-
-// UnmarshalErrorHandler is a name request handler to unmarshal request errors
-var UnmarshalErrorHandler = request.NamedHandler{Name: "awssdk.query.UnmarshalError", Fn: UnmarshalError}
-
-// UnmarshalError unmarshals an error response for an AWS Query service.
-func UnmarshalError(r *request.Request) {
- defer r.HTTPResponse.Body.Close()
-
- bodyBytes, err := ioutil.ReadAll(r.HTTPResponse.Body)
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to read from query HTTP response body", err)
- return
- }
-
- // First check for specific error
- resp := xmlErrorResponse{}
- decodeErr := xml.Unmarshal(bodyBytes, &resp)
- if decodeErr == nil {
- reqID := resp.RequestID
- if reqID == "" {
- reqID = r.RequestID
- }
- r.Error = awserr.NewRequestFailure(
- awserr.New(resp.Code, resp.Message, nil),
- r.HTTPResponse.StatusCode,
- reqID,
- )
- return
- }
-
- // Check for unhandled error
- servUnavailResp := xmlServiceUnavailableResponse{}
- unavailErr := xml.Unmarshal(bodyBytes, &servUnavailResp)
- if unavailErr == nil {
- r.Error = awserr.NewRequestFailure(
- awserr.New("ServiceUnavailableException", "service is unavailable", nil),
- r.HTTPResponse.StatusCode,
- r.RequestID,
- )
- return
- }
-
- // Failed to retrieve any error message from the response body
- r.Error = awserr.New("SerializationError",
- "failed to decode query XML error response", decodeErr)
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
deleted file mode 100644
index b34f525..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go
+++ /dev/null
@@ -1,295 +0,0 @@
-// Package rest provides RESTful serialization of AWS requests and responses.
-package rest
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "io"
- "net/http"
- "net/url"
- "path"
- "reflect"
- "strconv"
- "strings"
- "time"
-
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/private/protocol"
-)
-
-// Whether the byte value can be sent without escaping in AWS URLs
-var noEscape [256]bool
-
-var errValueNotSet = fmt.Errorf("value not set")
-
-func init() {
- for i := 0; i < len(noEscape); i++ {
- // AWS expects every character except these to be escaped
- noEscape[i] = (i >= 'A' && i <= 'Z') ||
- (i >= 'a' && i <= 'z') ||
- (i >= '0' && i <= '9') ||
- i == '-' ||
- i == '.' ||
- i == '_' ||
- i == '~'
- }
-}
-
-// BuildHandler is a named request handler for building rest protocol requests
-var BuildHandler = request.NamedHandler{Name: "awssdk.rest.Build", Fn: Build}
-
-// Build builds the REST component of a service request.
-func Build(r *request.Request) {
- if r.ParamsFilled() {
- v := reflect.ValueOf(r.Params).Elem()
- buildLocationElements(r, v, false)
- buildBody(r, v)
- }
-}
-
-// BuildAsGET builds the REST component of a service request with the ability to hoist
-// data from the body.
-func BuildAsGET(r *request.Request) {
- if r.ParamsFilled() {
- v := reflect.ValueOf(r.Params).Elem()
- buildLocationElements(r, v, true)
- buildBody(r, v)
- }
-}
-
-func buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bool) {
- query := r.HTTPRequest.URL.Query()
-
- // Setup the raw path to match the base path pattern. This is needed
- // so that when the path is mutated a custom escaped version can be
- // stored in RawPath that will be used by the Go client.
- r.HTTPRequest.URL.RawPath = r.HTTPRequest.URL.Path
-
- for i := 0; i < v.NumField(); i++ {
- m := v.Field(i)
- if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) {
- continue
- }
-
- if m.IsValid() {
- field := v.Type().Field(i)
- name := field.Tag.Get("locationName")
- if name == "" {
- name = field.Name
- }
- if kind := m.Kind(); kind == reflect.Ptr {
- m = m.Elem()
- } else if kind == reflect.Interface {
- if !m.Elem().IsValid() {
- continue
- }
- }
- if !m.IsValid() {
- continue
- }
- if field.Tag.Get("ignore") != "" {
- continue
- }
-
- var err error
- switch field.Tag.Get("location") {
- case "headers": // header maps
- err = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag)
- case "header":
- err = buildHeader(&r.HTTPRequest.Header, m, name, field.Tag)
- case "uri":
- err = buildURI(r.HTTPRequest.URL, m, name, field.Tag)
- case "querystring":
- err = buildQueryString(query, m, name, field.Tag)
- default:
- if buildGETQuery {
- err = buildQueryString(query, m, name, field.Tag)
- }
- }
- r.Error = err
- }
- if r.Error != nil {
- return
- }
- }
-
- r.HTTPRequest.URL.RawQuery = query.Encode()
- if !aws.BoolValue(r.Config.DisableRestProtocolURICleaning) {
- cleanPath(r.HTTPRequest.URL)
- }
-}
-
-func buildBody(r *request.Request, v reflect.Value) {
- if field, ok := v.Type().FieldByName("_"); ok {
- if payloadName := field.Tag.Get("payload"); payloadName != "" {
- pfield, _ := v.Type().FieldByName(payloadName)
- if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
- payload := reflect.Indirect(v.FieldByName(payloadName))
- if payload.IsValid() && payload.Interface() != nil {
- switch reader := payload.Interface().(type) {
- case io.ReadSeeker:
- r.SetReaderBody(reader)
- case []byte:
- r.SetBufferBody(reader)
- case string:
- r.SetStringBody(reader)
- default:
- r.Error = awserr.New("SerializationError",
- "failed to encode REST request",
- fmt.Errorf("unknown payload type %s", payload.Type()))
- }
- }
- }
- }
- }
-}
-
-func buildHeader(header *http.Header, v reflect.Value, name string, tag reflect.StructTag) error {
- str, err := convertType(v, tag)
- if err == errValueNotSet {
- return nil
- } else if err != nil {
- return awserr.New("SerializationError", "failed to encode REST request", err)
- }
-
- header.Add(name, str)
-
- return nil
-}
-
-func buildHeaderMap(header *http.Header, v reflect.Value, tag reflect.StructTag) error {
- prefix := tag.Get("locationName")
- for _, key := range v.MapKeys() {
- str, err := convertType(v.MapIndex(key), tag)
- if err == errValueNotSet {
- continue
- } else if err != nil {
- return awserr.New("SerializationError", "failed to encode REST request", err)
-
- }
-
- header.Add(prefix+key.String(), str)
- }
- return nil
-}
-
-func buildURI(u *url.URL, v reflect.Value, name string, tag reflect.StructTag) error {
- value, err := convertType(v, tag)
- if err == errValueNotSet {
- return nil
- } else if err != nil {
- return awserr.New("SerializationError", "failed to encode REST request", err)
- }
-
- u.Path = strings.Replace(u.Path, "{"+name+"}", value, -1)
- u.Path = strings.Replace(u.Path, "{"+name+"+}", value, -1)
-
- u.RawPath = strings.Replace(u.RawPath, "{"+name+"}", EscapePath(value, true), -1)
- u.RawPath = strings.Replace(u.RawPath, "{"+name+"+}", EscapePath(value, false), -1)
-
- return nil
-}
-
-func buildQueryString(query url.Values, v reflect.Value, name string, tag reflect.StructTag) error {
- switch value := v.Interface().(type) {
- case []*string:
- for _, item := range value {
- query.Add(name, *item)
- }
- case map[string]*string:
- for key, item := range value {
- query.Add(key, *item)
- }
- case map[string][]*string:
- for key, items := range value {
- for _, item := range items {
- query.Add(key, *item)
- }
- }
- default:
- str, err := convertType(v, tag)
- if err == errValueNotSet {
- return nil
- } else if err != nil {
- return awserr.New("SerializationError", "failed to encode REST request", err)
- }
- query.Set(name, str)
- }
-
- return nil
-}
-
-func cleanPath(u *url.URL) {
- hasSlash := strings.HasSuffix(u.Path, "/")
-
- // clean up path, removing duplicate `/`
- u.Path = path.Clean(u.Path)
- u.RawPath = path.Clean(u.RawPath)
-
- if hasSlash && !strings.HasSuffix(u.Path, "/") {
- u.Path += "/"
- u.RawPath += "/"
- }
-}
-
-// EscapePath escapes part of a URL path in Amazon style
-func EscapePath(path string, encodeSep bool) string {
- var buf bytes.Buffer
- for i := 0; i < len(path); i++ {
- c := path[i]
- if noEscape[c] || (c == '/' && !encodeSep) {
- buf.WriteByte(c)
- } else {
- fmt.Fprintf(&buf, "%%%02X", c)
- }
- }
- return buf.String()
-}
-
-func convertType(v reflect.Value, tag reflect.StructTag) (str string, err error) {
- v = reflect.Indirect(v)
- if !v.IsValid() {
- return "", errValueNotSet
- }
-
- switch value := v.Interface().(type) {
- case string:
- str = value
- case []byte:
- str = base64.StdEncoding.EncodeToString(value)
- case bool:
- str = strconv.FormatBool(value)
- case int64:
- str = strconv.FormatInt(value, 10)
- case float64:
- str = strconv.FormatFloat(value, 'f', -1, 64)
- case time.Time:
- format := tag.Get("timestampFormat")
- if len(format) == 0 {
- format = protocol.RFC822TimeFormatName
- if tag.Get("location") == "querystring" {
- format = protocol.ISO8601TimeFormatName
- }
- }
- str = protocol.FormatTime(format, value)
- case aws.JSONValue:
- if len(value) == 0 {
- return "", errValueNotSet
- }
- escaping := protocol.NoEscape
- if tag.Get("location") == "header" {
- escaping = protocol.Base64Escape
- }
- str, err = protocol.EncodeJSONValue(value, escaping)
- if err != nil {
- return "", fmt.Errorf("unable to encode JSONValue, %v", err)
- }
- default:
- err := fmt.Errorf("unsupported value for param %v (%s)", v.Interface(), v.Type())
- return "", err
- }
- return str, nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go
deleted file mode 100644
index 4366de2..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package rest
-
-import "reflect"
-
-// PayloadMember returns the payload field member of i if there is one, or nil.
-func PayloadMember(i interface{}) interface{} {
- if i == nil {
- return nil
- }
-
- v := reflect.ValueOf(i).Elem()
- if !v.IsValid() {
- return nil
- }
- if field, ok := v.Type().FieldByName("_"); ok {
- if payloadName := field.Tag.Get("payload"); payloadName != "" {
- field, _ := v.Type().FieldByName(payloadName)
- if field.Tag.Get("type") != "structure" {
- return nil
- }
-
- payload := v.FieldByName(payloadName)
- if payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) {
- return payload.Interface()
- }
- }
- }
- return nil
-}
-
-// PayloadType returns the type of a payload field member of i if there is one, or "".
-func PayloadType(i interface{}) string {
- v := reflect.Indirect(reflect.ValueOf(i))
- if !v.IsValid() {
- return ""
- }
- if field, ok := v.Type().FieldByName("_"); ok {
- if payloadName := field.Tag.Get("payload"); payloadName != "" {
- if member, ok := v.Type().FieldByName(payloadName); ok {
- return member.Tag.Get("type")
- }
- }
- }
- return ""
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
deleted file mode 100644
index 33fd53b..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
+++ /dev/null
@@ -1,225 +0,0 @@
-package rest
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "reflect"
- "strconv"
- "strings"
- "time"
-
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/private/protocol"
-)
-
-// UnmarshalHandler is a named request handler for unmarshaling rest protocol requests
-var UnmarshalHandler = request.NamedHandler{Name: "awssdk.rest.Unmarshal", Fn: Unmarshal}
-
-// UnmarshalMetaHandler is a named request handler for unmarshaling rest protocol request metadata
-var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.rest.UnmarshalMeta", Fn: UnmarshalMeta}
-
-// Unmarshal unmarshals the REST component of a response in a REST service.
-func Unmarshal(r *request.Request) {
- if r.DataFilled() {
- v := reflect.Indirect(reflect.ValueOf(r.Data))
- unmarshalBody(r, v)
- }
-}
-
-// UnmarshalMeta unmarshals the REST metadata of a response in a REST service
-func UnmarshalMeta(r *request.Request) {
- r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid")
- if r.RequestID == "" {
- // Alternative version of request id in the header
- r.RequestID = r.HTTPResponse.Header.Get("X-Amz-Request-Id")
- }
- if r.DataFilled() {
- v := reflect.Indirect(reflect.ValueOf(r.Data))
- unmarshalLocationElements(r, v)
- }
-}
-
-func unmarshalBody(r *request.Request, v reflect.Value) {
- if field, ok := v.Type().FieldByName("_"); ok {
- if payloadName := field.Tag.Get("payload"); payloadName != "" {
- pfield, _ := v.Type().FieldByName(payloadName)
- if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" {
- payload := v.FieldByName(payloadName)
- if payload.IsValid() {
- switch payload.Interface().(type) {
- case []byte:
- defer r.HTTPResponse.Body.Close()
- b, err := ioutil.ReadAll(r.HTTPResponse.Body)
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
- } else {
- payload.Set(reflect.ValueOf(b))
- }
- case *string:
- defer r.HTTPResponse.Body.Close()
- b, err := ioutil.ReadAll(r.HTTPResponse.Body)
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
- } else {
- str := string(b)
- payload.Set(reflect.ValueOf(&str))
- }
- default:
- switch payload.Type().String() {
- case "io.ReadCloser":
- payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
- case "io.ReadSeeker":
- b, err := ioutil.ReadAll(r.HTTPResponse.Body)
- if err != nil {
- r.Error = awserr.New("SerializationError",
- "failed to read response body", err)
- return
- }
- payload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b))))
- default:
- io.Copy(ioutil.Discard, r.HTTPResponse.Body)
- defer r.HTTPResponse.Body.Close()
- r.Error = awserr.New("SerializationError",
- "failed to decode REST response",
- fmt.Errorf("unknown payload type %s", payload.Type()))
- }
- }
- }
- }
- }
- }
-}
-
-func unmarshalLocationElements(r *request.Request, v reflect.Value) {
- for i := 0; i < v.NumField(); i++ {
- m, field := v.Field(i), v.Type().Field(i)
- if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {
- continue
- }
-
- if m.IsValid() {
- name := field.Tag.Get("locationName")
- if name == "" {
- name = field.Name
- }
-
- switch field.Tag.Get("location") {
- case "statusCode":
- unmarshalStatusCode(m, r.HTTPResponse.StatusCode)
- case "header":
- err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name), field.Tag)
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
- break
- }
- case "headers":
- prefix := field.Tag.Get("locationName")
- err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix)
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to decode REST response", err)
- break
- }
- }
- }
- if r.Error != nil {
- return
- }
- }
-}
-
-func unmarshalStatusCode(v reflect.Value, statusCode int) {
- if !v.IsValid() {
- return
- }
-
- switch v.Interface().(type) {
- case *int64:
- s := int64(statusCode)
- v.Set(reflect.ValueOf(&s))
- }
-}
-
-func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error {
- switch r.Interface().(type) {
- case map[string]*string: // we only support string map value types
- out := map[string]*string{}
- for k, v := range headers {
- k = http.CanonicalHeaderKey(k)
- if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) {
- out[k[len(prefix):]] = &v[0]
- }
- }
- r.Set(reflect.ValueOf(out))
- }
- return nil
-}
-
-func unmarshalHeader(v reflect.Value, header string, tag reflect.StructTag) error {
- isJSONValue := tag.Get("type") == "jsonvalue"
- if isJSONValue {
- if len(header) == 0 {
- return nil
- }
- } else if !v.IsValid() || (header == "" && v.Elem().Kind() != reflect.String) {
- return nil
- }
-
- switch v.Interface().(type) {
- case *string:
- v.Set(reflect.ValueOf(&header))
- case []byte:
- b, err := base64.StdEncoding.DecodeString(header)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(&b))
- case *bool:
- b, err := strconv.ParseBool(header)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(&b))
- case *int64:
- i, err := strconv.ParseInt(header, 10, 64)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(&i))
- case *float64:
- f, err := strconv.ParseFloat(header, 64)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(&f))
- case *time.Time:
- format := tag.Get("timestampFormat")
- if len(format) == 0 {
- format = protocol.RFC822TimeFormatName
- }
- t, err := protocol.ParseTime(format, header)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(&t))
- case aws.JSONValue:
- escaping := protocol.NoEscape
- if tag.Get("location") == "header" {
- escaping = protocol.Base64Escape
- }
- m, err := protocol.DecodeJSONValue(header, escaping)
- if err != nil {
- return err
- }
- v.Set(reflect.ValueOf(m))
- default:
- err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
- return err
- }
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
deleted file mode 100644
index 7bdf4c8..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/restxml/restxml.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Package restxml provides RESTful XML serialization of AWS
-// requests and responses.
-package restxml
-
-//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/rest-xml.json build_test.go
-//go:generate go run -tags codegen ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/rest-xml.json unmarshal_test.go
-
-import (
- "bytes"
- "encoding/xml"
-
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/private/protocol/query"
- "github.com/aws/aws-sdk-go/private/protocol/rest"
- "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
-)
-
-// BuildHandler is a named request handler for building restxml protocol requests
-var BuildHandler = request.NamedHandler{Name: "awssdk.restxml.Build", Fn: Build}
-
-// UnmarshalHandler is a named request handler for unmarshaling restxml protocol requests
-var UnmarshalHandler = request.NamedHandler{Name: "awssdk.restxml.Unmarshal", Fn: Unmarshal}
-
-// UnmarshalMetaHandler is a named request handler for unmarshaling restxml protocol request metadata
-var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.restxml.UnmarshalMeta", Fn: UnmarshalMeta}
-
-// UnmarshalErrorHandler is a named request handler for unmarshaling restxml protocol request errors
-var UnmarshalErrorHandler = request.NamedHandler{Name: "awssdk.restxml.UnmarshalError", Fn: UnmarshalError}
-
-// Build builds a request payload for the REST XML protocol.
-func Build(r *request.Request) {
- rest.Build(r)
-
- if t := rest.PayloadType(r.Params); t == "structure" || t == "" {
- var buf bytes.Buffer
- err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf))
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to encode rest XML request", err)
- return
- }
- r.SetBufferBody(buf.Bytes())
- }
-}
-
-// Unmarshal unmarshals a payload response for the REST XML protocol.
-func Unmarshal(r *request.Request) {
- if t := rest.PayloadType(r.Data); t == "structure" || t == "" {
- defer r.HTTPResponse.Body.Close()
- decoder := xml.NewDecoder(r.HTTPResponse.Body)
- err := xmlutil.UnmarshalXML(r.Data, decoder, "")
- if err != nil {
- r.Error = awserr.New("SerializationError", "failed to decode REST XML response", err)
- return
- }
- } else {
- rest.Unmarshal(r)
- }
-}
-
-// UnmarshalMeta unmarshals response headers for the REST XML protocol.
-func UnmarshalMeta(r *request.Request) {
- rest.UnmarshalMeta(r)
-}
-
-// UnmarshalError unmarshals a response error for the REST XML protocol.
-func UnmarshalError(r *request.Request) {
- query.UnmarshalError(r)
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go
deleted file mode 100644
index b7ed6c6..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package protocol
-
-import (
- "strconv"
- "time"
-)
-
-// Names of time formats supported by the SDK
-const (
- RFC822TimeFormatName = "rfc822"
- ISO8601TimeFormatName = "iso8601"
- UnixTimeFormatName = "unixTimestamp"
-)
-
-// Time formats supported by the SDK
-const (
- // RFC 7231#section-7.1.1.1 timetamp format. e.g Tue, 29 Apr 2014 18:30:38 GMT
- RFC822TimeFormat = "Mon, 2 Jan 2006 15:04:05 GMT"
-
- // RFC3339 a subset of the ISO8601 timestamp format. e.g 2014-04-29T18:30:38Z
- ISO8601TimeFormat = "2006-01-02T15:04:05Z"
-)
-
-// IsKnownTimestampFormat returns if the timestamp format name
-// is know to the SDK's protocols.
-func IsKnownTimestampFormat(name string) bool {
- switch name {
- case RFC822TimeFormatName:
- fallthrough
- case ISO8601TimeFormatName:
- fallthrough
- case UnixTimeFormatName:
- return true
- default:
- return false
- }
-}
-
-// FormatTime returns a string value of the time.
-func FormatTime(name string, t time.Time) string {
- t = t.UTC()
-
- switch name {
- case RFC822TimeFormatName:
- return t.Format(RFC822TimeFormat)
- case ISO8601TimeFormatName:
- return t.Format(ISO8601TimeFormat)
- case UnixTimeFormatName:
- return strconv.FormatInt(t.Unix(), 10)
- default:
- panic("unknown timestamp format name, " + name)
- }
-}
-
-// ParseTime attempts to parse the time given the format. Returns
-// the time if it was able to be parsed, and fails otherwise.
-func ParseTime(formatName, value string) (time.Time, error) {
- switch formatName {
- case RFC822TimeFormatName:
- return time.Parse(RFC822TimeFormat, value)
- case ISO8601TimeFormatName:
- return time.Parse(ISO8601TimeFormat, value)
- case UnixTimeFormatName:
- v, err := strconv.ParseFloat(value, 64)
- if err != nil {
- return time.Time{}, err
- }
- return time.Unix(int64(v), 0), nil
- default:
- panic("unknown timestamp format name, " + formatName)
- }
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go
deleted file mode 100644
index da1a681..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package protocol
-
-import (
- "io"
- "io/ioutil"
-
- "github.com/aws/aws-sdk-go/aws/request"
-)
-
-// UnmarshalDiscardBodyHandler is a named request handler to empty and close a response's body
-var UnmarshalDiscardBodyHandler = request.NamedHandler{Name: "awssdk.shared.UnmarshalDiscardBody", Fn: UnmarshalDiscardBody}
-
-// UnmarshalDiscardBody is a request handler to empty a response's body and closing it.
-func UnmarshalDiscardBody(r *request.Request) {
- if r.HTTPResponse == nil || r.HTTPResponse.Body == nil {
- return
- }
-
- io.Copy(ioutil.Discard, r.HTTPResponse.Body)
- r.HTTPResponse.Body.Close()
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
deleted file mode 100644
index 1bfe45f..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go
+++ /dev/null
@@ -1,306 +0,0 @@
-// Package xmlutil provides XML serialization of AWS requests and responses.
-package xmlutil
-
-import (
- "encoding/base64"
- "encoding/xml"
- "fmt"
- "reflect"
- "sort"
- "strconv"
- "time"
-
- "github.com/aws/aws-sdk-go/private/protocol"
-)
-
-// BuildXML will serialize params into an xml.Encoder. Error will be returned
-// if the serialization of any of the params or nested values fails.
-func BuildXML(params interface{}, e *xml.Encoder) error {
- return buildXML(params, e, false)
-}
-
-func buildXML(params interface{}, e *xml.Encoder, sorted bool) error {
- b := xmlBuilder{encoder: e, namespaces: map[string]string{}}
- root := NewXMLElement(xml.Name{})
- if err := b.buildValue(reflect.ValueOf(params), root, ""); err != nil {
- return err
- }
- for _, c := range root.Children {
- for _, v := range c {
- return StructToXML(e, v, sorted)
- }
- }
- return nil
-}
-
-// Returns the reflection element of a value, if it is a pointer.
-func elemOf(value reflect.Value) reflect.Value {
- for value.Kind() == reflect.Ptr {
- value = value.Elem()
- }
- return value
-}
-
-// A xmlBuilder serializes values from Go code to XML
-type xmlBuilder struct {
- encoder *xml.Encoder
- namespaces map[string]string
-}
-
-// buildValue generic XMLNode builder for any type. Will build value for their specific type
-// struct, list, map, scalar.
-//
-// Also takes a "type" tag value to set what type a value should be converted to XMLNode as. If
-// type is not provided reflect will be used to determine the value's type.
-func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
- value = elemOf(value)
- if !value.IsValid() { // no need to handle zero values
- return nil
- } else if tag.Get("location") != "" { // don't handle non-body location values
- return nil
- }
-
- t := tag.Get("type")
- if t == "" {
- switch value.Kind() {
- case reflect.Struct:
- t = "structure"
- case reflect.Slice:
- t = "list"
- case reflect.Map:
- t = "map"
- }
- }
-
- switch t {
- case "structure":
- if field, ok := value.Type().FieldByName("_"); ok {
- tag = tag + reflect.StructTag(" ") + field.Tag
- }
- return b.buildStruct(value, current, tag)
- case "list":
- return b.buildList(value, current, tag)
- case "map":
- return b.buildMap(value, current, tag)
- default:
- return b.buildScalar(value, current, tag)
- }
-}
-
-// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested
-// types are converted to XMLNodes also.
-func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
- if !value.IsValid() {
- return nil
- }
-
- // unwrap payloads
- if payload := tag.Get("payload"); payload != "" {
- field, _ := value.Type().FieldByName(payload)
- tag = field.Tag
- value = elemOf(value.FieldByName(payload))
-
- if !value.IsValid() {
- return nil
- }
- }
-
- child := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
-
- // there is an xmlNamespace associated with this struct
- if prefix, uri := tag.Get("xmlPrefix"), tag.Get("xmlURI"); uri != "" {
- ns := xml.Attr{
- Name: xml.Name{Local: "xmlns"},
- Value: uri,
- }
- if prefix != "" {
- b.namespaces[prefix] = uri // register the namespace
- ns.Name.Local = "xmlns:" + prefix
- }
-
- child.Attr = append(child.Attr, ns)
- }
-
- var payloadFields, nonPayloadFields int
-
- t := value.Type()
- for i := 0; i < value.NumField(); i++ {
- member := elemOf(value.Field(i))
- field := t.Field(i)
-
- if field.PkgPath != "" {
- continue // ignore unexported fields
- }
- if field.Tag.Get("ignore") != "" {
- continue
- }
-
- mTag := field.Tag
- if mTag.Get("location") != "" { // skip non-body members
- nonPayloadFields++
- continue
- }
- payloadFields++
-
- if protocol.CanSetIdempotencyToken(value.Field(i), field) {
- token := protocol.GetIdempotencyToken()
- member = reflect.ValueOf(token)
- }
-
- memberName := mTag.Get("locationName")
- if memberName == "" {
- memberName = field.Name
- mTag = reflect.StructTag(string(mTag) + ` locationName:"` + memberName + `"`)
- }
- if err := b.buildValue(member, child, mTag); err != nil {
- return err
- }
- }
-
- // Only case where the child shape is not added is if the shape only contains
- // non-payload fields, e.g headers/query.
- if !(payloadFields == 0 && nonPayloadFields > 0) {
- current.AddChild(child)
- }
-
- return nil
-}
-
-// buildList adds the value's list items to the current XMLNode as children nodes. All
-// nested values in the list are converted to XMLNodes also.
-func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
- if value.IsNil() { // don't build omitted lists
- return nil
- }
-
- // check for unflattened list member
- flattened := tag.Get("flattened") != ""
-
- xname := xml.Name{Local: tag.Get("locationName")}
- if flattened {
- for i := 0; i < value.Len(); i++ {
- child := NewXMLElement(xname)
- current.AddChild(child)
- if err := b.buildValue(value.Index(i), child, ""); err != nil {
- return err
- }
- }
- } else {
- list := NewXMLElement(xname)
- current.AddChild(list)
-
- for i := 0; i < value.Len(); i++ {
- iname := tag.Get("locationNameList")
- if iname == "" {
- iname = "member"
- }
-
- child := NewXMLElement(xml.Name{Local: iname})
- list.AddChild(child)
- if err := b.buildValue(value.Index(i), child, ""); err != nil {
- return err
- }
- }
- }
-
- return nil
-}
-
-// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All
-// nested values in the map are converted to XMLNodes also.
-//
-// Error will be returned if it is unable to build the map's values into XMLNodes
-func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
- if value.IsNil() { // don't build omitted maps
- return nil
- }
-
- maproot := NewXMLElement(xml.Name{Local: tag.Get("locationName")})
- current.AddChild(maproot)
- current = maproot
-
- kname, vname := "key", "value"
- if n := tag.Get("locationNameKey"); n != "" {
- kname = n
- }
- if n := tag.Get("locationNameValue"); n != "" {
- vname = n
- }
-
- // sorting is not required for compliance, but it makes testing easier
- keys := make([]string, value.Len())
- for i, k := range value.MapKeys() {
- keys[i] = k.String()
- }
- sort.Strings(keys)
-
- for _, k := range keys {
- v := value.MapIndex(reflect.ValueOf(k))
-
- mapcur := current
- if tag.Get("flattened") == "" { // add "entry" tag to non-flat maps
- child := NewXMLElement(xml.Name{Local: "entry"})
- mapcur.AddChild(child)
- mapcur = child
- }
-
- kchild := NewXMLElement(xml.Name{Local: kname})
- kchild.Text = k
- vchild := NewXMLElement(xml.Name{Local: vname})
- mapcur.AddChild(kchild)
- mapcur.AddChild(vchild)
-
- if err := b.buildValue(v, vchild, ""); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-// buildScalar will convert the value into a string and append it as a attribute or child
-// of the current XMLNode.
-//
-// The value will be added as an attribute if tag contains a "xmlAttribute" attribute value.
-//
-// Error will be returned if the value type is unsupported.
-func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error {
- var str string
- switch converted := value.Interface().(type) {
- case string:
- str = converted
- case []byte:
- if !value.IsNil() {
- str = base64.StdEncoding.EncodeToString(converted)
- }
- case bool:
- str = strconv.FormatBool(converted)
- case int64:
- str = strconv.FormatInt(converted, 10)
- case int:
- str = strconv.Itoa(converted)
- case float64:
- str = strconv.FormatFloat(converted, 'f', -1, 64)
- case float32:
- str = strconv.FormatFloat(float64(converted), 'f', -1, 32)
- case time.Time:
- format := tag.Get("timestampFormat")
- if len(format) == 0 {
- format = protocol.ISO8601TimeFormatName
- }
-
- str = protocol.FormatTime(format, converted)
- default:
- return fmt.Errorf("unsupported value for param %s: %v (%s)",
- tag.Get("locationName"), value.Interface(), value.Type().Name())
- }
-
- xname := xml.Name{Local: tag.Get("locationName")}
- if tag.Get("xmlAttribute") != "" { // put into current node's attribute list
- attr := xml.Attr{Name: xname, Value: str}
- current.Attr = append(current.Attr, attr)
- } else { // regular text node
- current.AddChild(&XMLNode{Name: xname, Text: str})
- }
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go
deleted file mode 100644
index ff1ef68..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go
+++ /dev/null
@@ -1,272 +0,0 @@
-package xmlutil
-
-import (
- "encoding/base64"
- "encoding/xml"
- "fmt"
- "io"
- "reflect"
- "strconv"
- "strings"
- "time"
-
- "github.com/aws/aws-sdk-go/private/protocol"
-)
-
-// UnmarshalXML deserializes an xml.Decoder into the container v. V
-// needs to match the shape of the XML expected to be decoded.
-// If the shape doesn't match unmarshaling will fail.
-func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
- n, err := XMLToStruct(d, nil)
- if err != nil {
- return err
- }
- if n.Children != nil {
- for _, root := range n.Children {
- for _, c := range root {
- if wrappedChild, ok := c.Children[wrapper]; ok {
- c = wrappedChild[0] // pull out wrapped element
- }
-
- err = parse(reflect.ValueOf(v), c, "")
- if err != nil {
- if err == io.EOF {
- return nil
- }
- return err
- }
- }
- }
- return nil
- }
- return nil
-}
-
-// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect
-// will be used to determine the type from r.
-func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- rtype := r.Type()
- if rtype.Kind() == reflect.Ptr {
- rtype = rtype.Elem() // check kind of actual element type
- }
-
- t := tag.Get("type")
- if t == "" {
- switch rtype.Kind() {
- case reflect.Struct:
- // also it can't be a time object
- if _, ok := r.Interface().(*time.Time); !ok {
- t = "structure"
- }
- case reflect.Slice:
- // also it can't be a byte slice
- if _, ok := r.Interface().([]byte); !ok {
- t = "list"
- }
- case reflect.Map:
- t = "map"
- }
- }
-
- switch t {
- case "structure":
- if field, ok := rtype.FieldByName("_"); ok {
- tag = field.Tag
- }
- return parseStruct(r, node, tag)
- case "list":
- return parseList(r, node, tag)
- case "map":
- return parseMap(r, node, tag)
- default:
- return parseScalar(r, node, tag)
- }
-}
-
-// parseStruct deserializes a structure and its fields from an XMLNode. Any nested
-// types in the structure will also be deserialized.
-func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- t := r.Type()
- if r.Kind() == reflect.Ptr {
- if r.IsNil() { // create the structure if it's nil
- s := reflect.New(r.Type().Elem())
- r.Set(s)
- r = s
- }
-
- r = r.Elem()
- t = t.Elem()
- }
-
- // unwrap any payloads
- if payload := tag.Get("payload"); payload != "" {
- field, _ := t.FieldByName(payload)
- return parseStruct(r.FieldByName(payload), node, field.Tag)
- }
-
- for i := 0; i < t.NumField(); i++ {
- field := t.Field(i)
- if c := field.Name[0:1]; strings.ToLower(c) == c {
- continue // ignore unexported fields
- }
-
- // figure out what this field is called
- name := field.Name
- if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" {
- name = field.Tag.Get("locationNameList")
- } else if locName := field.Tag.Get("locationName"); locName != "" {
- name = locName
- }
-
- // try to find the field by name in elements
- elems := node.Children[name]
-
- if elems == nil { // try to find the field in attributes
- if val, ok := node.findElem(name); ok {
- elems = []*XMLNode{{Text: val}}
- }
- }
-
- member := r.FieldByName(field.Name)
- for _, elem := range elems {
- err := parse(member, elem, field.Tag)
- if err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-// parseList deserializes a list of values from an XML node. Each list entry
-// will also be deserialized.
-func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- t := r.Type()
-
- if tag.Get("flattened") == "" { // look at all item entries
- mname := "member"
- if name := tag.Get("locationNameList"); name != "" {
- mname = name
- }
-
- if Children, ok := node.Children[mname]; ok {
- if r.IsNil() {
- r.Set(reflect.MakeSlice(t, len(Children), len(Children)))
- }
-
- for i, c := range Children {
- err := parse(r.Index(i), c, "")
- if err != nil {
- return err
- }
- }
- }
- } else { // flattened list means this is a single element
- if r.IsNil() {
- r.Set(reflect.MakeSlice(t, 0, 0))
- }
-
- childR := reflect.Zero(t.Elem())
- r.Set(reflect.Append(r, childR))
- err := parse(r.Index(r.Len()-1), node, "")
- if err != nil {
- return err
- }
- }
-
- return nil
-}
-
-// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode
-// will also be deserialized as map entries.
-func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- if r.IsNil() {
- r.Set(reflect.MakeMap(r.Type()))
- }
-
- if tag.Get("flattened") == "" { // look at all child entries
- for _, entry := range node.Children["entry"] {
- parseMapEntry(r, entry, tag)
- }
- } else { // this element is itself an entry
- parseMapEntry(r, node, tag)
- }
-
- return nil
-}
-
-// parseMapEntry deserializes a map entry from a XML node.
-func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- kname, vname := "key", "value"
- if n := tag.Get("locationNameKey"); n != "" {
- kname = n
- }
- if n := tag.Get("locationNameValue"); n != "" {
- vname = n
- }
-
- keys, ok := node.Children[kname]
- values := node.Children[vname]
- if ok {
- for i, key := range keys {
- keyR := reflect.ValueOf(key.Text)
- value := values[i]
- valueR := reflect.New(r.Type().Elem()).Elem()
-
- parse(valueR, value, "")
- r.SetMapIndex(keyR, valueR)
- }
- }
- return nil
-}
-
-// parseScaller deserializes an XMLNode value into a concrete type based on the
-// interface type of r.
-//
-// Error is returned if the deserialization fails due to invalid type conversion,
-// or unsupported interface type.
-func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error {
- switch r.Interface().(type) {
- case *string:
- r.Set(reflect.ValueOf(&node.Text))
- return nil
- case []byte:
- b, err := base64.StdEncoding.DecodeString(node.Text)
- if err != nil {
- return err
- }
- r.Set(reflect.ValueOf(b))
- case *bool:
- v, err := strconv.ParseBool(node.Text)
- if err != nil {
- return err
- }
- r.Set(reflect.ValueOf(&v))
- case *int64:
- v, err := strconv.ParseInt(node.Text, 10, 64)
- if err != nil {
- return err
- }
- r.Set(reflect.ValueOf(&v))
- case *float64:
- v, err := strconv.ParseFloat(node.Text, 64)
- if err != nil {
- return err
- }
- r.Set(reflect.ValueOf(&v))
- case *time.Time:
- format := tag.Get("timestampFormat")
- if len(format) == 0 {
- format = protocol.ISO8601TimeFormatName
- }
-
- t, err := protocol.ParseTime(format, node.Text)
- if err != nil {
- return err
- }
- r.Set(reflect.ValueOf(&t))
- default:
- return fmt.Errorf("unsupported value: %v (%s)", r.Interface(), r.Type())
- }
- return nil
-}
diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go
deleted file mode 100644
index 515ce15..0000000
--- a/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go
+++ /dev/null
@@ -1,148 +0,0 @@
-package xmlutil
-
-import (
- "encoding/xml"
- "fmt"
- "io"
- "sort"
-)
-
-// A XMLNode contains the values to be encoded or decoded.
-type XMLNode struct {
- Name xml.Name `json:",omitempty"`
- Children map[string][]*XMLNode `json:",omitempty"`
- Text string `json:",omitempty"`
- Attr []xml.Attr `json:",omitempty"`
-
- namespaces map[string]string
- parent *XMLNode
-}
-
-// NewXMLElement returns a pointer to a new XMLNode initialized to default values.
-func NewXMLElement(name xml.Name) *XMLNode {
- return &XMLNode{
- Name: name,
- Children: map[string][]*XMLNode{},
- Attr: []xml.Attr{},
- }
-}
-
-// AddChild adds child to the XMLNode.
-func (n *XMLNode) AddChild(child *XMLNode) {
- child.parent = n
- if _, ok := n.Children[child.Name.Local]; !ok {
- n.Children[child.Name.Local] = []*XMLNode{}
- }
- n.Children[child.Name.Local] = append(n.Children[child.Name.Local], child)
-}
-
-// XMLToStruct converts a xml.Decoder stream to XMLNode with nested values.
-func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) {
- out := &XMLNode{}
- for {
- tok, err := d.Token()
- if err != nil {
- if err == io.EOF {
- break
- } else {
- return out, err
- }
- }
-
- if tok == nil {
- break
- }
-
- switch typed := tok.(type) {
- case xml.CharData:
- out.Text = string(typed.Copy())
- case xml.StartElement:
- el := typed.Copy()
- out.Attr = el.Attr
- if out.Children == nil {
- out.Children = map[string][]*XMLNode{}
- }
-
- name := typed.Name.Local
- slice := out.Children[name]
- if slice == nil {
- slice = []*XMLNode{}
- }
- node, e := XMLToStruct(d, &el)
- out.findNamespaces()
- if e != nil {
- return out, e
- }
- node.Name = typed.Name
- node.findNamespaces()
- tempOut := *out
- // Save into a temp variable, simply because out gets squashed during
- // loop iterations
- node.parent = &tempOut
- slice = append(slice, node)
- out.Children[name] = slice
- case xml.EndElement:
- if s != nil && s.Name.Local == typed.Name.Local { // matching end token
- return out, nil
- }
- out = &XMLNode{}
- }
- }
- return out, nil
-}
-
-func (n *XMLNode) findNamespaces() {
- ns := map[string]string{}
- for _, a := range n.Attr {
- if a.Name.Space == "xmlns" {
- ns[a.Value] = a.Name.Local
- }
- }
-
- n.namespaces = ns
-}
-
-func (n *XMLNode) findElem(name string) (string, bool) {
- for node := n; node != nil; node = node.parent {
- for _, a := range node.Attr {
- namespace := a.Name.Space
- if v, ok := node.namespaces[namespace]; ok {
- namespace = v
- }
- if name == fmt.Sprintf("%s:%s", namespace, a.Name.Local) {
- return a.Value, true
- }
- }
- }
- return "", false
-}
-
-// StructToXML writes an XMLNode to a xml.Encoder as tokens.
-func StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error {
- e.EncodeToken(xml.StartElement{Name: node.Name, Attr: node.Attr})
-
- if node.Text != "" {
- e.EncodeToken(xml.CharData([]byte(node.Text)))
- } else if sorted {
- sortedNames := []string{}
- for k := range node.Children {
- sortedNames = append(sortedNames, k)
- }
- sort.Strings(sortedNames)
-
- for _, k := range sortedNames {
- for _, v := range node.Children[k] {
- StructToXML(e, v, sorted)
- }
- }
- } else {
- for _, c := range node.Children {
- for _, v := range c {
- StructToXML(e, v, sorted)
- }
- }
- }
-
- e.EncodeToken(xml.EndElement{Name: node.Name})
- return e.Flush()
-}