in pkg/confidence/confidence.go [107:140]
func (e Confidence) Track(ctx context.Context, eventName string, data map[string]interface{}) *sync.WaitGroup {
newMap := make(map[string]interface{})
newMap["context"] = e.GetContext()
for key, value := range data {
if key == "context" {
panic("invalid key \"context\" inside the data")
}
newMap[key] = value
}
var wg sync.WaitGroup
wg.Add(1)
go func() {
currentTime := time.Now()
iso8601Time := currentTime.Format(time.RFC3339)
event := Event{
EventDefinition: fmt.Sprintf("eventDefinitions/%s", eventName),
EventTime: iso8601Time,
Payload: newMap,
}
batch := EventBatchRequest{
CclientSecret: e.Config.APIKey,
Sdk: sdk{SDK_ID, SDK_VERSION},
SendTime: iso8601Time,
Events: []Event{event},
}
e.Logger.Debug("EventUploading started", "eventName", eventName)
e.EventUploader.upload(ctx, batch)
wg.Done()
e.Logger.Debug("EventUploading completed", "eventName", eventName)
}()
return &wg
}