From 478b678a6e574dbd3831ee026d1a0367f77508ac Mon Sep 17 00:00:00 2001 From: Kevin Franklin Kim Date: Thu, 21 Nov 2024 13:56:10 +0100 Subject: [PATCH] feat: add decode --- pkg/http/mpv2/middleware.go | 3 --- pkg/sesamy/event.go | 4 ++++ pkg/sesamy/event_test.go | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 pkg/sesamy/event_test.go diff --git a/pkg/http/mpv2/middleware.go b/pkg/http/mpv2/middleware.go index bcb3fb6..4cc1c24 100644 --- a/pkg/http/mpv2/middleware.go +++ b/pkg/http/mpv2/middleware.go @@ -100,7 +100,6 @@ func MiddlewareUserAgent(next MiddlewareHandler) MiddlewareHandler { for i, event := range payload.Events { if value, ok := event.Params.(map[string]any); ok { value["user_agent"] = userAgent - event.Params = value payload.Events[i] = event } } @@ -122,7 +121,6 @@ func MiddlewareIPOverride(next MiddlewareHandler) MiddlewareHandler { for i, event := range payload.Events { if value, ok := event.Params.(map[string]any); ok { value["ip_override"] = ipOverride - event.Params = value payload.Events[i] = event } } @@ -137,7 +135,6 @@ func MiddlewarePageLocation(next MiddlewareHandler) MiddlewareHandler { for i, event := range payload.Events { if value, ok := event.Params.(map[string]any); ok { value["page_location"] = referrer - event.Params = value payload.Events[i] = event } } diff --git a/pkg/sesamy/event.go b/pkg/sesamy/event.go index e302325..ab50dbf 100644 --- a/pkg/sesamy/event.go +++ b/pkg/sesamy/event.go @@ -36,3 +36,7 @@ func (e Event[P]) Decode(output any) error { func (e Event[P]) DecodeParams(output any) error { return Decode(e.Params, output) } + +func (e Event[P]) EncodeParams(input any) error { + return Decode(input, &e.Params) +} diff --git a/pkg/sesamy/event_test.go b/pkg/sesamy/event_test.go new file mode 100644 index 0000000..a030d8e --- /dev/null +++ b/pkg/sesamy/event_test.go @@ -0,0 +1,35 @@ +package sesamy_test + +import ( + "testing" + + "github.com/foomo/sesamy-go/pkg/sesamy" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDecodeParams(t *testing.T) { + type params struct { + Title string `json:"title"` + } + + event := sesamy.Event[any]{ + Name: "test", + Params: map[string]any{ + "title": "foo", + "description": "foo", + }, + } + + var p params + require.NoError(t, event.DecodeParams(&p)) + assert.Equal(t, "foo", p.Title) + + p.Title = "bar" + + require.NoError(t, event.EncodeParams(p)) + assert.Equal(t, map[string]any{ + "title": "bar", + "description": "foo", + }, event.Params) +}