11package any
22
33import (
4+ "errors"
5+ "fmt"
46 "strings"
57
6- "github.com/golang/protobuf/proto"
8+ proto_old "github.com/golang/protobuf/proto"
79 "github.com/golang/protobuf/ptypes"
8- "github.com/golang/protobuf/ptypes/any"
910 "github.com/vimeda/pletter/pb"
11+ "google.golang.org/protobuf/proto"
12+ "google.golang.org/protobuf/types/known/anypb"
1013)
1114
15+ // ErrEmptyMessage when message is nil
16+ var ErrEmptyMessage = errors .New ("message is nil" )
17+
1218// PackAndMarshal packs a proto message into an envelope message and marshal it
1319func PackAndMarshal (m proto.Message ) ([]byte , error ) {
1420 e , err := Pack (m )
@@ -21,14 +27,22 @@ func PackAndMarshal(m proto.Message) ([]byte, error) {
2127
2228// Pack packs a proto message into an envelope message
2329func Pack (m proto.Message ) (pb.Envelope , error ) {
30+ if m == nil {
31+ return pb.Envelope {}, ErrEmptyMessage
32+ }
33+
2434 raw , err := proto .Marshal (m )
2535 if err != nil {
2636 return pb.Envelope {}, err
2737 }
2838
39+ fullName := m .ProtoReflect ().Descriptor ().FullName ()
40+
41+ fmt .Println (fullName )
42+
2943 return pb.Envelope {
30- InnerMessage : & any .Any {
31- TypeUrl : "github.com/lykon/pletter/" + proto . MessageName ( m ),
44+ InnerMessage : & anypb .Any {
45+ TypeUrl : fmt . Sprintf ( "github.com/lykon/pletter/%s" , fullName ),
3246 Value : raw ,
3347 },
3448 }, nil
@@ -42,12 +56,10 @@ func Unpack(m []byte, t proto.Message) error {
4256 return err
4357 }
4458
45- err = ptypes .UnmarshalAny (e .GetInnerMessage (), t )
46- if err != nil {
47- return err
48- }
49-
50- return nil
59+ return ptypes .UnmarshalAny (
60+ e .GetInnerMessage (),
61+ proto_old .MessageV1 (t ),
62+ )
5163}
5264
5365// GetMessageName returns the message name from the wrapped proto message
0 commit comments