mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
feat: add middlewares
This commit is contained in:
parent
9cca227cd3
commit
757a4f63e5
@ -17,12 +17,11 @@ import (
|
||||
|
||||
type (
|
||||
Collect struct {
|
||||
l *zap.Logger
|
||||
taggingURL string
|
||||
taggingClient *http.Client
|
||||
taggingMaxResponseCode int
|
||||
gtagHTTPMiddlewares []gtaghttp.Middleware
|
||||
mpv2HTTPMiddlewares []mpv2http.Middleware
|
||||
l *zap.Logger
|
||||
taggingURL string
|
||||
taggingClient *http.Client
|
||||
gtagHTTPMiddlewares []gtaghttp.Middleware
|
||||
mpv2HTTPMiddlewares []mpv2http.Middleware
|
||||
}
|
||||
Option func(*Collect) error
|
||||
)
|
||||
@ -65,9 +64,8 @@ func WithMPv2HTTPMiddlewares(v ...mpv2http.Middleware) Option {
|
||||
|
||||
func New(l *zap.Logger, opts ...Option) (*Collect, error) {
|
||||
inst := &Collect{
|
||||
l: l,
|
||||
taggingClient: http.DefaultClient,
|
||||
taggingMaxResponseCode: http.StatusBadRequest,
|
||||
l: l,
|
||||
taggingClient: http.DefaultClient,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
|
||||
@ -94,6 +94,55 @@ func MiddlewareTimestamp(next MiddlewareHandler) MiddlewareHandler {
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareUserAgentEventParam(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
||||
if userAgent := r.Header.Get("User-Agent"); userAgent != "" {
|
||||
for i, event := range payload.Events {
|
||||
if value, ok := event.Params.(map[string]any); ok {
|
||||
value["user_agent"] = userAgent
|
||||
}
|
||||
payload.Events[i] = event
|
||||
}
|
||||
}
|
||||
return next(l, w, r, payload)
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareIPOverrideEventParam(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
||||
var ipOverride string
|
||||
for _, key := range []string{"X-Original-Forwarded-For", "X-Forwarded-For", "X-Real-Ip"} {
|
||||
if value := r.Header.Get(key); value != "" {
|
||||
ipOverride = value
|
||||
break
|
||||
}
|
||||
}
|
||||
if ipOverride != "" {
|
||||
for i, event := range payload.Events {
|
||||
if value, ok := event.Params.(map[string]any); ok {
|
||||
value["ip_override"] = ipOverride
|
||||
}
|
||||
payload.Events[i] = event
|
||||
}
|
||||
}
|
||||
return next(l, w, r, payload)
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewarePageLocationEventParam(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
||||
if referrer := r.Header.Get("Referer"); referrer != "" {
|
||||
for i, event := range payload.Events {
|
||||
if value, ok := event.Params.(map[string]any); ok {
|
||||
value["page_location"] = referrer
|
||||
}
|
||||
payload.Events[i] = event
|
||||
}
|
||||
}
|
||||
return next(l, w, r, payload)
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareLogger(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
||||
eventNames := make([]string, len(payload.Events))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user