mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package client
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/foomo/sesamy-go/pkg/client"
|
|
"github.com/foomo/sesamy-go/pkg/encoding/mpv2"
|
|
"github.com/foomo/sesamy-go/pkg/provider/cookiebot"
|
|
)
|
|
|
|
func MPv2MiddlewarConsent(next client.MPv2Handler) client.MPv2Handler {
|
|
return func(r *http.Request, payload *mpv2.Payload[any]) error {
|
|
fmt.Println("---> 1")
|
|
cookie, err := r.Cookie(cookiebot.CookieName)
|
|
if err != nil || cookie.Value == "" {
|
|
return next(r, payload)
|
|
}
|
|
|
|
fmt.Println("---> 2: " + cookie.Value)
|
|
data, err := base64.StdEncoding.DecodeString(cookie.Value)
|
|
if err != nil {
|
|
fmt.Println("---> 2: " + err.Error())
|
|
return next(r, payload)
|
|
}
|
|
|
|
var value cookiebot.Cookie
|
|
fmt.Println("---> 3")
|
|
if err := json.Unmarshal(data, &value); err != nil {
|
|
return next(r, payload)
|
|
}
|
|
|
|
consent := func(b bool) *string {
|
|
ret := "denied"
|
|
if b {
|
|
ret = "granted"
|
|
}
|
|
return &ret
|
|
}
|
|
|
|
fmt.Println("---> 4")
|
|
payload.Consent = &mpv2.Consent{
|
|
AdUserData: consent(value.Marketing),
|
|
AdPersonalization: consent(value.Statistics),
|
|
}
|
|
|
|
return next(r, payload)
|
|
}
|
|
}
|