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

73 lines
1.7 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)
reporter.Package = devtodev.Package{
Language: "en",
Country: "US",
}
if _, err := reporter.DeviceInfo(ctx, base.UnixMilli(), map[string]interface{}{
"platform": "ios",
"device": "iPhone14,3",
}); err != nil {
panic(err)
}
if _, err := reporter.SessionStart(ctx, base.Add(2*time.Second).UnixMilli(), level, nil); err != nil {
panic(err)
}
// 2-4 user engagement heartbeats
ueCount := rand.Intn(3) + 2
for i := 0; i < ueCount; i++ {
if _, err := reporter.UserEngagement(ctx, base.Add(time.Duration(10*(i+1))*time.Second).UnixMilli(), level, 10, nil); err != nil {
panic(err)
}
}
// 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)
if _, err := reporter.RealPayment(
ctx,
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,
); err != nil {
panic(err)
}
}
}
fmt.Printf("sent events for %d users\n", userCount)
}