sesamy-go/measurementprotocol/v2/middleware.go
2024-03-11 16:02:15 +01:00

75 lines
1.6 KiB
Go

package v2
import (
"net/http"
"net/url"
"strings"
)
func MiddlewareRichsstsse(next ClientHandler) ClientHandler {
v := ""
return func(r *http.Request, event *Event) error {
event.Richsstsse = &v
return nil
}
}
func MiddlewareTrackingID(v string) ClientMiddleware {
return func(next ClientHandler) ClientHandler {
return func(r *http.Request, event *Event) error {
event.TrackingID = &v
return nil
}
}
}
func MiddlewarProtocolVersion(v string) ClientMiddleware {
return func(next ClientHandler) ClientHandler {
return func(r *http.Request, event *Event) error {
event.ProtocolVersion = &v
return nil
}
}
}
func MiddlewarIgnoreReferrer(v string) ClientMiddleware {
return func(next ClientHandler) ClientHandler {
return func(r *http.Request, event *Event) error {
event.IgnoreReferrer = &v
return nil
}
}
}
func MiddlewarDebug(next ClientHandler) ClientHandler {
v := "1"
return func(r *http.Request, event *Event) error {
if value, _ := r.Cookie("gtm_debug"); value != nil {
event.IsDebug = &v
}
return nil
}
}
func MiddlewarClientID(next ClientHandler) ClientHandler {
return func(r *http.Request, event *Event) error {
if value, _ := r.Cookie("_ga"); value != nil {
clientID := strings.TrimPrefix(value.Value, "GA1.1.")
event.ClientID = &clientID
}
return nil
}
}
func MiddlewarDocument(next ClientHandler) ClientHandler {
return func(r *http.Request, event *Event) error {
if referrer, err := url.Parse(r.Referer()); err != nil {
return err
} else {
event.DocumentLocation = &referrer.Path
event.DocumentHostname = &referrer.Host
}
return nil
}
}