diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-06-06 14:44:38 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-06-06 14:44:38 +0100 |
commit | 067ad51b6a6ee8829612f51a6e6b2ade3eaa61b3 (patch) | |
tree | 301d2a7303e2b5db0c3fa1911d799e16f921d9dc /vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go | |
parent | 5ca59399fe0880368f88d17c0c9d781d836969c6 (diff) | |
parent | a18a13fb09eac00cdacf1f74080524182b7243de (diff) |
Merge pull request #17 from nsheridan/vendor
update dependencies
Diffstat (limited to 'vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go')
-rw-r--r-- | vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go | 45 |
1 files changed, 45 insertions, 0 deletions
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 new file mode 100644 index 0000000..4366de2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go @@ -0,0 +1,45 @@ +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 "" +} |