71 lines
1.8 KiB
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)
|
|
}
|