package eventsub import ( "context" "go.fifitido.net/twitch/api" "go.fifitido.net/twitch/api/eventsub" ) type EventSub struct { api *api.API transport *eventsub.Transport subscriptions map[string]*eventsub.Subscription } func New(api *api.API, trans *eventsub.Transport) *EventSub { return &EventSub{ api: api, transport: trans, } } func (e *EventSub) Subscribe(ctx context.Context, subType eventsub.SubscriptionType, cond eventsub.Condition) error { res, err := e.api.EventSub.CreateEventSubSubscription(ctx, &eventsub.CreateEventSubSubscriptionRequest{ SubscriptionType: subType, Condition: cond, Transport: e.transport, }) if err != nil { return err } for _, sub := range res.Data { e.subscriptions[sub.ID] = sub } return nil } func (e *EventSub) Close() error { for _, sub := range e.subscriptions { if err := e.api.EventSub.DeleteEventSubSubscription(context.Background(), sub.ID); err != nil { return err } } return nil }