From e37fbd26d67a038496bc0cb189bad7818589cdb4 Mon Sep 17 00:00:00 2001 From: gabrielmer <101006718+gabrielmer@users.noreply.github.com> Date: Tue, 27 May 2025 16:39:00 +0200 Subject: [PATCH] chore: overriding json unmarshaler (#73) --- waku/common/envelope.go | 34 +++++++++++++++++----------------- waku/nwaku.go | 6 ++++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/waku/common/envelope.go b/waku/common/envelope.go index a27fc68..19926c2 100644 --- a/waku/common/envelope.go +++ b/waku/common/envelope.go @@ -31,27 +31,27 @@ type wakuEnvelope struct { MessageHash MessageHash `json:"messageHash"` } -// NewEnvelope creates a new Envelope from a json string generated in nwaku -func NewEnvelope(jsonEventStr string) (*Envelope, error) { +// UnmarshalJSON implements the json.Unmarshaler interface +func (e *Envelope) UnmarshalJSON(input []byte) error { wakuEnvelope := wakuEnvelope{} - err := json.Unmarshal([]byte(jsonEventStr), &wakuEnvelope) + err := json.Unmarshal(input, &wakuEnvelope) if err != nil { - return nil, err + return err } - return &Envelope{ - 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, - }, - topic: wakuEnvelope.PubsubTopic, - hash: wakuEnvelope.MessageHash, - }, nil + 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 { diff --git a/waku/nwaku.go b/waku/nwaku.go index f1e2c48..d88fe4c 100644 --- a/waku/nwaku.go +++ b/waku/nwaku.go @@ -480,12 +480,14 @@ func (n *WakuNode) OnEvent(eventStr string) { } func (n *WakuNode) parseMessageEvent(eventStr string) { - envelope, err := common.NewEnvelope(eventStr) + var envelope common.Envelope + err := json.Unmarshal([]byte(eventStr), &envelope) if err != nil { Error("could not parse message %v", err) + return } select { - case n.MsgChan <- *envelope: + case n.MsgChan <- envelope: default: Warn("Can't deliver message to subscription, MsgChan is full") }