mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
feat: add with timeout middleware
This commit is contained in:
parent
603cc9e45b
commit
69fc1ac71d
@ -1,7 +1,9 @@
|
||||
package gtag
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/foomo/sesamy-go/pkg/encoding/gtag"
|
||||
"github.com/foomo/sesamy-go/pkg/encoding/gtagencode"
|
||||
@ -52,6 +54,16 @@ func MiddlewareUserID(cookieName string) Middleware {
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareWithTimeout(timeout time.Duration) Middleware {
|
||||
return func(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *gtag.Payload) error {
|
||||
ctx, cancel := context.WithTimeout(context.WithoutCancel(r.Context()), timeout)
|
||||
defer cancel()
|
||||
return next(l, w, r.WithContext(ctx), payload)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareLogger(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *gtag.Payload) error {
|
||||
if spanCtx := trace.SpanContextFromContext(r.Context()); spanCtx.IsValid() && spanCtx.IsSampled() {
|
||||
@ -60,6 +72,7 @@ func MiddlewareLogger(next MiddlewareHandler) MiddlewareHandler {
|
||||
l = l.With(
|
||||
zap.String("event_name", gtag.GetDefault(payload.EventName, "-").String()),
|
||||
zap.String("event_user_id", gtag.GetDefault(payload.UserID, "-")),
|
||||
zap.String("event_client_id", gtag.GetDefault(payload.ClientID, "-")),
|
||||
zap.String("event_session_id", gtag.GetDefault(payload.SessionID, "-")),
|
||||
)
|
||||
err := next(l, w, r, payload)
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package mpv2
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
@ -143,6 +144,16 @@ func MiddlewarePageLocation(next MiddlewareHandler) MiddlewareHandler {
|
||||
}
|
||||
}
|
||||
|
||||
func MiddlewareWithTimeout(timeout time.Duration) Middleware {
|
||||
return func(next MiddlewareHandler) MiddlewareHandler {
|
||||
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
||||
ctx, cancel := context.WithTimeout(context.WithoutCancel(r.Context()), timeout)
|
||||
defer cancel()
|
||||
return next(l, w, r.WithContext(ctx), 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))
|
||||
@ -153,12 +164,12 @@ func MiddlewareLogger(next MiddlewareHandler) MiddlewareHandler {
|
||||
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, ",")),
|
||||
zap.String("event_user_id", payload.UserID),
|
||||
zap.String("event_client_id", payload.ClientID),
|
||||
zap.String("event_session_id", payload.SessionID),
|
||||
)
|
||||
|
||||
err := next(l, w, r, payload)
|
||||
if err != nil {
|
||||
l.Error("handled event", zap.Error(err))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user