mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-21 13:23:07 +01:00
43 lines
898 B
Go
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
|
|
}
|