diff --git a/lib/lib.go b/lib/lib.go index 19c2581..54891f6 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -82,7 +82,8 @@ type Address interface { type Payload interface { fmt.Stringer - //Data() interface{} + Data() interface{} + FromJson(string) Payload } // action diff --git a/lib/message/message.go b/lib/message/message.go index 0df964e..b352c22 100644 --- a/lib/message/message.go +++ b/lib/message/message.go @@ -100,15 +100,23 @@ func (pl *payload) String() string { return string(b) } +func (pl *payload) Data() interface{} { + return pl.data +} + +func (pl *payload) FromJson(s string) lib.Payload { + err := json.Unmarshal([]byte(s), &pl.data) + if err != nil { + log.Error().Err(err).Msg("payload.FromJson()") + } + return pl +} + func Payload(d interface{}) lib.Payload { return &payload{d} } -func FromJson[T any](s string) lib.Payload { +func PayloadFromJson[T any](s string) lib.Payload { pl := &payload{new(T)} - err := json.Unmarshal([]byte(s), &pl.data) - if err != nil { - log.Error().Err(err).Msg("payload: FromJson()") - } - return pl + return pl.FromJson(s) } diff --git a/tests/unit_test.go b/tests/unit_test.go index 3b1e303..94db531 100644 --- a/tests/unit_test.go +++ b/tests/unit_test.go @@ -54,6 +54,6 @@ func PayloadTest(t *testing.T) { pl2 := message.Payload(map[string]string{"activity": "development"}) t.AssertEqual(fmt.Sprint(pl2), `{"activity":"development"}`) msg.WithPayload(pl2) - pl3 := message.FromJson[map[string]any](`{"activity": "development"}`) + pl3 := message.PayloadFromJson[map[string]any](`{"activity": "development"}`) t.AssertEqual(fmt.Sprint(pl3), `{"activity":"development"}`) }