mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-03-14 22:02:22 -04:00
* Remove `make updatedeps` from Travis build. We'll follow up with more specific plans around dependency updating in subsequent PRs. * Update all `make` targets to set `GO15VENDOREXPERIMENT=1` and to filter out `/vendor/` from `./...` where appropriate. * Temporarily remove `vet` from the `make test` target until we can figure out how to get it to not vet `vendor/`. (Initial experimentation failed to yield the proper incantation.) Everything is pinned to current master, with the exception of: * Azure/azure-sdk-for-go which is pinned before the breaking change today * aws/aws-sdk-go which is pinned to the most recent tag The documentation still needs to be updated, which we can do in a follow up PR. The goal here is to unblock release.
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
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 ""
|
|
}
|