101 lines
3.1 KiB
Go
101 lines
3.1 KiB
Go
package messages
|
||
|
||
import (
|
||
"time"
|
||
|
||
"go.fifitido.net/twitch/api/eventsub"
|
||
)
|
||
|
||
type Message struct {
|
||
// An ID that uniquely identifies this message.
|
||
// This is an opaque ID, and is not required to be in any particular format.
|
||
Id string
|
||
|
||
// Twitch sends you a notification at least once.
|
||
// If Twitch is unsure of whether you received a notification, it’ll resend the event, which means you may receive a notification twice.
|
||
// If this is an issue for your implementation, see Handling duplicates for options: https://dev.twitch.tv/docs/eventsub#handling-duplicate-events
|
||
Retry string
|
||
|
||
// The type of notification.
|
||
Type Type
|
||
|
||
// The HMAC signature that you use to verify that Twitch sent the message.
|
||
// See Verifying the event message: https://dev.twitch.tv/docs/eventsub/handling-webhook-events/#verifying-the-event-message
|
||
Signature string
|
||
|
||
// The UTC date and time (in RFC3339 format) that Twitch sent the notification.
|
||
Timestamp time.Time
|
||
|
||
// The subscription type you subscribed to. For example, channel.follow.
|
||
SubscriptionType *eventsub.SubscriptionType
|
||
|
||
// The message data.
|
||
//
|
||
// For TypeNotification, this will be a Notification.
|
||
//
|
||
// For TypeWebhookCallbackVerification, this will be a WebhookCallbackVerification.
|
||
//
|
||
// For TypeRevocation, this will be a Revocation.
|
||
Data any
|
||
}
|
||
|
||
type Type string
|
||
|
||
const (
|
||
// notification — Contains the event's data.
|
||
// See Processing an event: https://dev.twitch.tv/docs/eventsub/handling-webhook-events/#processing-an-event
|
||
TypeNotification Type = "notification"
|
||
|
||
// webhook_callback_verification — Contains the challenge used to verify that you own the event handler.
|
||
// See Responding to a challenge request: https://dev.twitch.tv/docs/eventsub/handling-webhook-events/#responding-to-a-challenge-request
|
||
TypeWebhookCallbackVerification Type = "webhook_callback_verification"
|
||
|
||
// revocation — Contains the reason why Twitch revoked your subscription.
|
||
// See Revoking your subscription: https://dev.twitch.tv/docs/eventsub/handling-webhook-events/#revoking-your-subscription
|
||
TypeRevocation Type = "revocation"
|
||
)
|
||
|
||
type Subscription struct {
|
||
// Your client ID.
|
||
Id string `json:"id"`
|
||
|
||
// The notification’s subscription type.
|
||
Type string `json:"type"`
|
||
|
||
// The version of the subscription.
|
||
Version string `json:"version"`
|
||
|
||
// The status of the subscription.
|
||
Status string `json:"status"`
|
||
|
||
// How much the subscription counts against your limit. See Subscription Limits for more information.
|
||
Cost int `json:"cost"`
|
||
|
||
// Subscription-specific parameters.
|
||
Condition map[string]any `json:"condition"`
|
||
|
||
// The time the notification was created.
|
||
CreatedAt string `json:"created_at"`
|
||
}
|
||
|
||
type Notification struct {
|
||
// Metadata about the subscription.
|
||
Subscription Subscription `json:"subscription"`
|
||
|
||
// The notification’s event data..
|
||
Event any `json:"event"`
|
||
}
|
||
|
||
type Revocation struct {
|
||
// Metadata about the subscription.
|
||
Subscription Subscription `json:"subscription"`
|
||
}
|
||
|
||
type WebhookCallbackVerification struct {
|
||
// The challenge.
|
||
Challenge string `json:"challenge"`
|
||
|
||
// Metadata about the subscription.
|
||
Subscription Subscription `json:"subscription"`
|
||
}
|