mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
feat: add decode
This commit is contained in:
parent
e801701b58
commit
478b678a6e
@ -100,7 +100,6 @@ func MiddlewareUserAgent(next MiddlewareHandler) MiddlewareHandler {
|
|||||||
for i, event := range payload.Events {
|
for i, event := range payload.Events {
|
||||||
if value, ok := event.Params.(map[string]any); ok {
|
if value, ok := event.Params.(map[string]any); ok {
|
||||||
value["user_agent"] = userAgent
|
value["user_agent"] = userAgent
|
||||||
event.Params = value
|
|
||||||
payload.Events[i] = event
|
payload.Events[i] = event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,7 +121,6 @@ func MiddlewareIPOverride(next MiddlewareHandler) MiddlewareHandler {
|
|||||||
for i, event := range payload.Events {
|
for i, event := range payload.Events {
|
||||||
if value, ok := event.Params.(map[string]any); ok {
|
if value, ok := event.Params.(map[string]any); ok {
|
||||||
value["ip_override"] = ipOverride
|
value["ip_override"] = ipOverride
|
||||||
event.Params = value
|
|
||||||
payload.Events[i] = event
|
payload.Events[i] = event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +135,6 @@ func MiddlewarePageLocation(next MiddlewareHandler) MiddlewareHandler {
|
|||||||
for i, event := range payload.Events {
|
for i, event := range payload.Events {
|
||||||
if value, ok := event.Params.(map[string]any); ok {
|
if value, ok := event.Params.(map[string]any); ok {
|
||||||
value["page_location"] = referrer
|
value["page_location"] = referrer
|
||||||
event.Params = value
|
|
||||||
payload.Events[i] = event
|
payload.Events[i] = event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,3 +36,7 @@ func (e Event[P]) Decode(output any) error {
|
|||||||
func (e Event[P]) DecodeParams(output any) error {
|
func (e Event[P]) DecodeParams(output any) error {
|
||||||
return Decode(e.Params, output)
|
return Decode(e.Params, output)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e Event[P]) EncodeParams(input any) error {
|
||||||
|
return Decode(input, &e.Params)
|
||||||
|
}
|
||||||
|
|||||||
35
pkg/sesamy/event_test.go
Normal file
35
pkg/sesamy/event_test.go
Normal file
@ -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)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user