mirror of
https://github.com/pomerium/pomerium.git
synced 2025-07-09 21:08:11 +02:00
protoutil: add support for converting arbitrary protobuf messages into structs (#3106)
This commit is contained in:
parent
8cc9c9c8fb
commit
9e4edb8003
2 changed files with 14 additions and 0 deletions
|
@ -5,6 +5,8 @@ import (
|
|||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"google.golang.org/protobuf/encoding/protojson"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"google.golang.org/protobuf/types/known/structpb"
|
||||
)
|
||||
|
||||
|
@ -45,6 +47,15 @@ func ToStruct(value interface{}) *structpb.Value {
|
|||
return NewStructNumber(float64(v))
|
||||
}
|
||||
|
||||
if msg, ok := value.(proto.Message); ok {
|
||||
bs, _ := protojson.Marshal(msg)
|
||||
var s structpb.Struct
|
||||
_ = protojson.Unmarshal(bs, &s)
|
||||
return &structpb.Value{
|
||||
Kind: &structpb.Value_StructValue{StructValue: &s},
|
||||
}
|
||||
}
|
||||
|
||||
rv := reflect.ValueOf(value)
|
||||
switch rv.Kind() {
|
||||
case reflect.Slice:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue