owncast/models/webhook.go
Gabe Kangas 85e7af3d5f
Update to Go 1.20 + run better align (#2927)
* chore(go): update go version to 1.20. Closes #2185

* chore(go): run better align against project

To optimize struct field order. Closes #2870

* chore(go): update CI jobs to use Go 1.20

* fix(go): linter warnings for Go 1.20 update
2023-05-30 10:31:43 -07:00

38 lines
948 B
Go

package models
import (
"time"
"github.com/owncast/owncast/utils"
)
// Webhook is an event that is sent to 3rd party, external services with details about something that took place within an Owncast server.
type Webhook struct {
Timestamp time.Time `json:"timestamp"`
LastUsed *time.Time `json:"lastUsed"`
URL string `json:"url"`
Events []EventType `json:"events"`
ID int `json:"id"`
}
// For an event to be seen as "valid" it must live in this slice.
var validEvents = []EventType{
MessageSent,
UserJoined,
UserNameChanged,
VisibiltyToggled,
StreamStarted,
StreamStopped,
StreamTitleUpdated,
}
// HasValidEvents will verify that all the events provided are valid.
// This is not a efficient method.
func HasValidEvents(events []EventType) bool {
for _, event := range events {
if _, foundInSlice := utils.FindInSlice(validEvents, event); !foundInSlice {
return false
}
}
return true
}