pkg/confidence/EventUploader.go (37 lines of code) (raw):
package confidence
import (
"bytes"
"context"
"encoding/json"
"net/http"
"golang.org/x/exp/slog"
)
type EventUploader interface {
upload(ctx context.Context, request EventBatchRequest)
}
type HttpEventUploader struct {
Client *http.Client
Config APIConfig
Logger *slog.Logger
}
func (e HttpEventUploader) upload(ctx context.Context, request EventBatchRequest) {
jsonRequest, err := json.Marshal(request)
if err != nil {
return
}
payload := bytes.NewBuffer(jsonRequest)
req, err := http.NewRequestWithContext(ctx,
http.MethodPost, "https://events.eu.confidence.dev/v1/events:publish", payload)
if err != nil {
return
}
resp, err := e.Client.Do(req)
if err != nil {
e.Logger.Warn("Failed to perform upload request", "error", err)
return
}
if resp.StatusCode != http.StatusOK {
e.Logger.Warn("Failed to upload event", "status", resp.Status)
}
defer resp.Body.Close()
}