mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-02 14:03:10 +00:00
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package common
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
|
)
|
|
|
|
// Envelope contains information about the pubsub topic of a WakuMessage
|
|
// and a hash used to identify a message based on the bytes of a WakuMessage
|
|
// protobuffer
|
|
type Envelope struct {
|
|
msg *pb.WakuMessage
|
|
topic string
|
|
hash MessageHash
|
|
}
|
|
|
|
type wakuMessage struct {
|
|
Payload []byte `json:"payload,omitempty"`
|
|
ContentTopic string `json:"contentTopic,omitempty"`
|
|
Version *uint32 `json:"version,omitempty"`
|
|
Timestamp *int64 `json:"timestamp,omitempty"`
|
|
Meta []byte `json:"meta,omitempty"`
|
|
Ephemeral *bool `json:"ephemeral,omitempty"`
|
|
RateLimitProof []byte `json:"proof,omitempty"`
|
|
}
|
|
|
|
type wakuEnvelope struct {
|
|
WakuMessage wakuMessage `json:"wakuMessage"`
|
|
PubsubTopic string `json:"pubsubTopic"`
|
|
MessageHash MessageHash `json:"messageHash"`
|
|
}
|
|
|
|
// UnmarshalJSON implements the json.Unmarshaler interface
|
|
func (e *Envelope) UnmarshalJSON(input []byte) error {
|
|
wakuEnvelope := wakuEnvelope{}
|
|
err := json.Unmarshal(input, &wakuEnvelope)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
e.msg = &pb.WakuMessage{
|
|
Payload: wakuEnvelope.WakuMessage.Payload,
|
|
ContentTopic: wakuEnvelope.WakuMessage.ContentTopic,
|
|
Version: wakuEnvelope.WakuMessage.Version,
|
|
Timestamp: wakuEnvelope.WakuMessage.Timestamp,
|
|
Meta: wakuEnvelope.WakuMessage.Meta,
|
|
Ephemeral: wakuEnvelope.WakuMessage.Ephemeral,
|
|
RateLimitProof: wakuEnvelope.WakuMessage.RateLimitProof,
|
|
}
|
|
e.topic = wakuEnvelope.PubsubTopic
|
|
e.hash = wakuEnvelope.MessageHash
|
|
|
|
return nil
|
|
}
|
|
|
|
func (e *Envelope) Message() *pb.WakuMessage {
|
|
return e.msg
|
|
}
|
|
|
|
func (e *Envelope) PubsubTopic() string {
|
|
return e.topic
|
|
}
|
|
|
|
func (e *Envelope) Hash() MessageHash {
|
|
return e.hash
|
|
}
|