bygdata/pkg/devtodev/cmd/send/main.go

71 lines
1.8 KiB
Go

package main
import (
"context"
"fmt"
"math/rand"
"time"
devtodev "devtodev-sdk"
)
func main() {
rand.Seed(time.Now().UnixNano())
appID := "2d942fe9-c1d3-081c-bdb3-ec6080273fe6"
client := devtodev.NewClient(appID)
client.Compression = devtodev.CompressionNone
ctx := context.Background()
userCount := rand.Intn(2) + 2 // 2-3 users
for u := 0; u < userCount; u++ {
deviceID := fmt.Sprintf("device-%d", rand.Int63())
base := time.Now().Add(time.Duration(-rand.Intn(120)) * time.Second)
level := rand.Intn(20) + 1
reporter := devtodev.NewReporter(client, deviceID)
pkg := reporter.NewPackage().
WithLanguage("en").
WithCountry("US")
deviceInfoEvent := devtodev.NewDeviceInfoEvent(base.UnixMilli(), map[string]interface{}{
"platform": "ios",
"device": "iPhone14,3",
})
pkg.Append(deviceInfoEvent)
sessionStartEvent := devtodev.NewSessionStartEvent(base.Add(2*time.Second).UnixMilli(), level, nil)
pkg.Append(sessionStartEvent)
// 2-4 user engagement heartbeats
ueCount := rand.Intn(3) + 2
for i := 0; i < ueCount; i++ {
ueEvent := devtodev.NewUserEngagementEvent(base.Add(time.Duration(10*(i+1))*time.Second).UnixMilli(), level, 10, nil)
pkg.Append(ueEvent)
}
// 1-3 real payments, each price 5-10
payments := rand.Intn(3) + 1
for i := 0; i < payments; i++ {
price := float64(rand.Intn(6) + 5)
paymentEvent := devtodev.NewRealPaymentEvent(
base.Add(time.Duration(60+(i*10))*time.Second).UnixMilli(),
level,
fmt.Sprintf("com.demo.product.%d", rand.Intn(5)+1),
fmt.Sprintf("order-%d-%d", time.Now().UnixNano(), i),
price,
"USD",
nil,
)
pkg.Append(paymentEvent)
}
if _, err := pkg.Report(ctx); err != nil {
panic(err)
}
}
fmt.Printf("sent events for %d users\n", userCount)
}