cancel, err := client.Events.Subscribe(ctx, func(event grantex.GrantexEvent) {
switch event.Type {
case "grant.created":
fmt.Printf("New grant: %s\n", event.Data["grantId"])
case "grant.revoked":
fmt.Printf("Grant revoked: %s\n", event.Data["grantId"])
case "budget.threshold":
fmt.Printf("Budget at %v%% for grant %s\n",
event.Data["percentage"], event.Data["grantId"])
case "budget.exhausted":
fmt.Printf("Budget exhausted for grant %s\n", event.Data["grantId"])
}
}, &grantex.StreamOptions{
EventTypes: []string{"grant.created", "grant.revoked", "budget.threshold", "budget.exhausted"},
})
if err != nil {
log.Fatal(err)
}
defer cancel()
// Block until interrupted
<-ctx.Done()