mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package loki
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/foomo/sesamy-go/pkg/encoding/gtag"
|
|
"github.com/foomo/sesamy-go/pkg/encoding/gtagencode"
|
|
"github.com/foomo/sesamy-go/pkg/encoding/mpv2"
|
|
gtaghttp "github.com/foomo/sesamy-go/pkg/http/gtag"
|
|
mpv2http "github.com/foomo/sesamy-go/pkg/http/mpv2"
|
|
"github.com/pkg/errors"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func GTagMiddleware(loki *Loki) gtaghttp.Middleware {
|
|
return func(next gtaghttp.MiddlewareHandler) gtaghttp.MiddlewareHandler {
|
|
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *gtag.Payload) error {
|
|
// encode to mpv2
|
|
var mpv2Payload mpv2.Payload[any]
|
|
if err := gtagencode.MPv2(*payload, &mpv2Payload); err != nil {
|
|
return errors.Wrap(err, "failed to encode gtag to mpv2")
|
|
}
|
|
loki.Write(mpv2Payload)
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
func MPv2Middleware(loki *Loki) mpv2http.Middleware {
|
|
return func(next mpv2http.MiddlewareHandler) mpv2http.MiddlewareHandler {
|
|
return func(l *zap.Logger, w http.ResponseWriter, r *http.Request, payload *mpv2.Payload[any]) error {
|
|
loki.Write(*payload)
|
|
return nil
|
|
}
|
|
}
|
|
}
|