diff --git a/measurementprotocol/v2/event/click.go b/measurementprotocol/v2/event/click.go new file mode 100644 index 0000000..a965dd3 --- /dev/null +++ b/measurementprotocol/v2/event/click.go @@ -0,0 +1,27 @@ +package event + +import ( + mp "github.com/foomo/sesamy-go/measurementprotocol" + mpv2 "github.com/foomo/sesamy-go/measurementprotocol/v2" +) + +type Click struct { + LinkID string `json:"linkId,omitempty"` + LinkURL string `json:"link_url,omitempty"` + LinkDomain string `json:"link_domain,omitempty"` + LinkClasses string `json:"link_classes,omitempty"` + Outbound bool `json:"outbound,omitempty"` +} + +func (e *Click) MarshalMPv2() (*mpv2.Event, error) { + eventParameter := map[string]string{} + mp.AddStringMap(eventParameter, mpv2.EventParameterLinkID.String(), mp.SetString(e.LinkID)) + mp.AddStringMap(eventParameter, mpv2.EventParameterLinkUrl.String(), mp.SetString(e.LinkURL)) + mp.AddStringMap(eventParameter, mpv2.EventParameterLinkDomain.String(), mp.SetString(e.LinkDomain)) + mp.AddStringMap(eventParameter, mpv2.EventParameterLinkClasses.String(), mp.SetString(e.LinkClasses)) + mp.AddStringMap(eventParameter, mpv2.EventParameterOutbound.String(), mp.SetBool(e.Outbound)) + return &mpv2.Event{ + EventName: mp.Set(mpv2.EventNameClick), + EventParameter: mp.SetStringMap(eventParameter), + }, nil +} diff --git a/measurementprotocol/v2/event/pageview.go b/measurementprotocol/v2/event/pageview.go new file mode 100644 index 0000000..60fe824 --- /dev/null +++ b/measurementprotocol/v2/event/pageview.go @@ -0,0 +1,14 @@ +package event + +import ( + mp "github.com/foomo/sesamy-go/measurementprotocol" + mpv2 "github.com/foomo/sesamy-go/measurementprotocol/v2" +) + +type PageView struct{} + +func (e *PageView) MarshalMPv2() (*mpv2.Event, error) { + return &mpv2.Event{ + EventName: mp.Set(mpv2.EventNamePageView), + }, nil +} diff --git a/measurementprotocol/v2/event/scroll.go b/measurementprotocol/v2/event/scroll.go new file mode 100644 index 0000000..5a32673 --- /dev/null +++ b/measurementprotocol/v2/event/scroll.go @@ -0,0 +1,19 @@ +package event + +import ( + mp "github.com/foomo/sesamy-go/measurementprotocol" + mpv2 "github.com/foomo/sesamy-go/measurementprotocol/v2" +) + +type Scroll struct { + PercentScrolled float64 `json:"percent_scrolled"` +} + +func (e *Scroll) MarshalMPv2() (*mpv2.Event, error) { + eventParameterNumber := map[string]string{} + mp.AddStringMap(eventParameterNumber, mpv2.EventParameterNumberPercentScrolled.String(), mp.SetFloat64(e.PercentScrolled)) + return &mpv2.Event{ + EventName: mp.Set(mpv2.EventNameScroll), + EventParameterNumber: mp.SetStringMap(eventParameterNumber), + }, nil +} diff --git a/measurementprotocol/v2/eventname.go b/measurementprotocol/v2/eventname.go index 1dea4d0..aee01ea 100644 --- a/measurementprotocol/v2/eventname.go +++ b/measurementprotocol/v2/eventname.go @@ -8,6 +8,7 @@ const ( EventNameAddToCart EventName = "add_to_cart" EventNameAddToWishlist EventName = "add_to_wishlit" EventNameBeginCheckout EventName = "begin_checkout" + EventNameClick EventName = "click" EventNameEarnVirtualMoney EventName = "earn_virtual_money" EventNameGenerateLead EventName = "generate_lead" EventNameJoinGroup EventName = "join_group" @@ -15,10 +16,12 @@ const ( EventNameLevelStart EventName = "level_start" EventNameLevelUp EventName = "level_up" EventNameLogin EventName = "login" + EventNamePageView EventName = "page_view" EventNamePostScore EventName = "post_score" EventNamePurchase EventName = "purchase" EventNameRefund EventName = "refund" EventNameRemoveFromCart EventName = "remove_from_cart" + EventNameScroll EventName = "scroll" EventNameSearch EventName = "search" EventNameSelectContent EventName = "select_content" EventNameSelectItem EventName = "select_item" diff --git a/measurementprotocol/v2/eventparamternumber.go b/measurementprotocol/v2/eventparamternumber.go index 5ddbbe6..9c6ade2 100644 --- a/measurementprotocol/v2/eventparamternumber.go +++ b/measurementprotocol/v2/eventparamternumber.go @@ -17,7 +17,8 @@ const ( // EventParameterNumberShipping The shipping cost associated with a transaction EventParameterNumberShipping EventParameterNumber = "shipping" // EventParameterNumberTax The tax cost associated with a transaction - EventParameterNumberTax EventParameterNumber = "tax" + EventParameterNumberTax EventParameterNumber = "tax" + EventParameterNumberPercentScrolled EventParameterNumber = "percent_scrolled" ) func (s EventParameterNumber) String() string {