1
0
mirror of https://github.com/amir20/dozzle.git synced 2025-12-21 13:23:07 +01:00
Files
dozzle/internal/analytics/http_beacon.go
2024-12-16 11:01:29 -08:00

43 lines
898 B
Go

package analytics
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"net/http/httputil"
"github.com/amir20/dozzle/types"
"github.com/rs/zerolog/log"
)
func SendBeacon(e types.BeaconEvent) error {
log.Trace().Interface("event", e).Msg("sending beacon")
jsonValue, err := json.Marshal(e)
if err != nil {
return err
}
req, err := http.NewRequest("POST", "https://b.dozzle.dev/event", bytes.NewBuffer(jsonValue))
if err != nil {
return err
}
response, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer response.Body.Close()
if response.StatusCode/100 != 2 {
dump, err := httputil.DumpResponse(response, true)
if err != nil {
return err
}
log.Debug().Str("response", string(dump)).Msg("google analytics returned non-2xx status code")
return fmt.Errorf("google analytics returned non-2xx status code: %v", response.Status)
}
return nil
}