mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
feat: transform document params
This commit is contained in:
parent
c5248e77c2
commit
2770d4f32f
2
go.mod
2
go.mod
@ -18,6 +18,7 @@ require (
|
||||
github.com/pperaltaisern/watermillzap v1.0.0
|
||||
github.com/prometheus/common v0.60.1
|
||||
github.com/stretchr/testify v1.9.0
|
||||
go.opentelemetry.io/otel/trace v1.32.0
|
||||
go.uber.org/zap v1.27.0
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
)
|
||||
@ -112,7 +113,6 @@ require (
|
||||
go.opentelemetry.io/collector/pdata v1.12.0 // indirect
|
||||
go.opentelemetry.io/otel v1.32.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.32.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.32.0 // indirect
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect
|
||||
|
||||
@ -2,15 +2,16 @@ package gtag
|
||||
|
||||
import (
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func PublisherMiddlewareIgnoreError(next PublisherHandler) PublisherHandler {
|
||||
return func(l *zap.Logger, msg *message.Message) error {
|
||||
if err := next(l, msg); err != nil {
|
||||
// if spanCtx := trace.SpanContextFromContext(msg.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
// l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
// }
|
||||
if spanCtx := trace.SpanContextFromContext(msg.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
}
|
||||
l.With(zap.Error(err)).Warn("ignoring error")
|
||||
}
|
||||
return nil
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/foomo/sesamy-go/pkg/encoding/gtag"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -20,9 +21,9 @@ func SubscriberMiddlewareUserID(cookieName string) SubscriberMiddleware {
|
||||
|
||||
func SubscriberMiddlewareLogger(next SubscriberHandler) SubscriberHandler {
|
||||
return func(l *zap.Logger, r *http.Request, payload *gtag.Payload) error {
|
||||
// if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
// l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
// }
|
||||
if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
}
|
||||
l = l.With(
|
||||
zap.String("event_name", gtag.GetDefault(payload.EventName, "-").String()),
|
||||
zap.String("event_user_id", gtag.GetDefault(payload.UserID, "-")),
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
"github.com/foomo/sesamy-go/pkg/encoding/mpv2"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -12,9 +13,9 @@ import (
|
||||
func PublisherMiddlewareIgnoreError(next PublisherHandler) PublisherHandler {
|
||||
return func(l *zap.Logger, msg *message.Message) error {
|
||||
if err := next(l, msg); err != nil {
|
||||
// if spanCtx := trace.SpanContextFromContext(msg.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
// l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
// }
|
||||
if spanCtx := trace.SpanContextFromContext(msg.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
}
|
||||
l.With(zap.Error(err)).Warn("ignoring error")
|
||||
}
|
||||
return nil
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
"github.com/foomo/sesamy-go/pkg/encoding/mpv2"
|
||||
"github.com/foomo/sesamy-go/pkg/session"
|
||||
"github.com/pkg/errors"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -80,9 +81,9 @@ func SubscriberMiddlewareLogger(next SubscriberHandler) SubscriberHandler {
|
||||
eventNames[i] = event.Name.String()
|
||||
}
|
||||
|
||||
// if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
// l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
// }
|
||||
if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
l = l.With(zap.String("trace_id", spanCtx.TraceID().String()), zap.String("span_id", spanCtx.SpanID().String()))
|
||||
}
|
||||
|
||||
l = l.With(
|
||||
zap.String("event_names", strings.Join(eventNames, ",")),
|
||||
|
||||
@ -40,7 +40,7 @@ func TestDecode(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "add_to_cart",
|
||||
args: GTagAddToCart,
|
||||
args: "v=2&tid=G-F9XM71K45T>m=45he45m0v9184715813z89184708445za200zb9184708445&_p=1716795486104&_dbg=1&gcd=13l3l3l2l1&npa=1&dma_cps=sypham&dma=1&cid=179294588.1715353601&ecid=788548699&ul=en-us&sr=2056x1329&_fplc=0&ur=&uaa=arm&uab=64&uafvl=Chromium%3B124.0.6367.201%7CGoogle%2520Chrome%3B124.0.6367.201%7CNot-A.Brand%3B99.0.0.0&uamb=0&uam=&uap=macOS&uapv=14.4.1&uaw=0&are=1&frm=0&pscdl=noapi&sst.gcd=13l3l3l2l1&sst.tft=1716795486104&sst.ude=0&_s=4&cu=USD&sid=1716793773&sct=14&seg=1&dl=https%3A%2F%2Fsesamy.local.bestbytes.net%2F%3Fgtm_debug%3D1716795486020&dr=https%3A%2F%2Ftagassistant.google.com%2F&dt=Home&en=add_to_cart&pr1=idSKU_12345~nmStan%20and%20Friends%20Tee~afGoogle%20Merchandise%20Store~cpSUMMER_FUN~ds2.22~lp0~brGoogle~caApparel~c2Adult~c3Shirts~c4Crew~c5Short%20sleeve~lirelated_products~lnRelated%20Products~vagreen~loChIJIQBpAG2ahYAR_6128GcTUEo~pr10.01~qt3&ep.enable_page_views=false&epn.value=30.03&_et=1255&tfd=145479&richsstsse",
|
||||
want: `{"consent":{"google_consent_default":"13l3l3l2l1"},"campaign":{},"ecommerce":{"currency":"USD","items":[{"affiliation":"Google Merchandise Store","coupon":"SUMMER_FUN","discount":"2.22","item_brand":"Google","item_category":"Apparel","item_category2":"Adult","item_category3":"Shirts","item_category4":"Crew","item_category5":"Short sleeve","item_id":"SKU_12345","item_list_id":"related_products","item_list_name":"Related Products","item_name":"Stan and Friends Tee","item_variant":"green","item_list_position":"0","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","price":"10.01","quantity":"3"}]},"client_hints":{"screen_resolution":"2056x1329","user_language":"en-us","user_agent_architecture":"arm","user_agent_bitness":"64","user_agent_full_version_list":"Chromium;124.0.6367.201|Google%20Chrome;124.0.6367.201|Not-A.Brand;99.0.0.0","user_agent_mobile":"0","user_agent_model":"","user_agent_platform":"macOS","user_agent_platform_version":"14.4.1","user_agent_wow_64":"0","user_region":""},"protocol_version":"2","tracking_id":"G-F9XM71K45T","gtmhash_info":"45he45m0v9184715813z89184708445za200zb9184708445","client_id":"179294588.1715353601","richsstsse":"","document_location":"https://sesamy.local.bestbytes.net/?gtm_debug=1716795486020","document_title":"Home","document_referrer":"https://tagassistant.google.com/","is_debug":"1","event_name":"add_to_cart","event_parameter":{"enable_page_views":"false"},"event_parameter_number":{"value":"30.03"},"session_id":"1716793773","non_personalized_ads":"1","sst":{"tft":"1716795486104","gcd":"13l3l3l2l1","ude":"0"}}`,
|
||||
},
|
||||
{
|
||||
|
||||
@ -52,6 +52,15 @@ func MPv2(source gtag.Payload, target any) error {
|
||||
"name": source.EventName,
|
||||
}
|
||||
targetEventDataParams := map[string]any{}
|
||||
if value, ok := sourceData["document_title"]; ok {
|
||||
targetEventDataParams["page_title"] = value
|
||||
}
|
||||
if value, ok := sourceData["document_referrer"]; ok {
|
||||
targetEventDataParams["page_referrer"] = value
|
||||
}
|
||||
if value, ok := sourceData["document_location"]; ok {
|
||||
targetEventDataParams["page_location"] = value
|
||||
}
|
||||
if node, ok := sourceData["ecommerce"].(map[string]any); ok {
|
||||
maps.Copy(targetEventDataParams, node)
|
||||
}
|
||||
|
||||
@ -48,17 +48,23 @@ func GTag[P any](source mpv2.Payload[P], target any) error {
|
||||
targetData["event_name"] = sourceData["name"]
|
||||
|
||||
if params, ok := sourceData["params"].(map[string]any); ok {
|
||||
targetData["document_title"] = params["page_title"]
|
||||
delete(params, "page_title")
|
||||
targetData["document_referrer"] = params["page_referrer"]
|
||||
delete(params, "page_referrer")
|
||||
targetData["document_location"] = params["page_location"]
|
||||
delete(params, "page_location")
|
||||
targetData["currency"] = params["currency"]
|
||||
targetData["promotion_id"] = params["promotion_id"]
|
||||
targetData["promotion_name"] = params["promotion_name"]
|
||||
targetData["location_id"] = params["location_id"]
|
||||
targetData["is_conversion"] = params["is_conversion"]
|
||||
targetData["items"] = params["items"]
|
||||
delete(params, "currency")
|
||||
targetData["promotion_id"] = params["promotion_id"]
|
||||
delete(params, "promotion_id")
|
||||
targetData["promotion_name"] = params["promotion_name"]
|
||||
delete(params, "promotion_name")
|
||||
targetData["location_id"] = params["location_id"]
|
||||
delete(params, "location_id")
|
||||
targetData["is_conversion"] = params["is_conversion"]
|
||||
delete(params, "is_conversion")
|
||||
targetData["items"] = params["items"]
|
||||
delete(params, "items")
|
||||
{ // user_property
|
||||
targetEventProperty := map[string]any{}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user