| 1234567891011121314151617181920212223242526272829303132 |
- package armadilloutil
- import (
- "errors"
- "fmt"
- "google.golang.org/protobuf/proto"
- "go.mau.fi/whatsmeow/proto/waCommon"
- )
- var ErrUnsupportedVersion = errors.New("unsupported subprotocol version")
- func Unmarshal[T proto.Message](into T, msg *waCommon.SubProtocol, expectedVersion int32) (T, error) {
- if msg.GetVersion() != expectedVersion {
- return into, fmt.Errorf("%w %d in %T (expected %d)", ErrUnsupportedVersion, msg.GetVersion(), into, expectedVersion)
- }
- err := proto.Unmarshal(msg.GetPayload(), into)
- return into, err
- }
- func Marshal[T proto.Message](msg T, version int32) (*waCommon.SubProtocol, error) {
- payload, err := proto.Marshal(msg)
- if err != nil {
- return nil, err
- }
- return &waCommon.SubProtocol{
- Payload: payload,
- Version: &version,
- }, nil
- }
|