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) }