mirror of
https://github.com/owncast/owncast.git
synced 2025-11-01 19:32:20 +08:00
* Initial plan * Add server status as default field in all webhooks Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Fix goimports linter error by removing trailing whitespace Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Move serverURL from status object to separate webhook field per feedback Per code review feedback, serverURL is a configuration value, not a status property. This change: - Removes ServerURL from models.Status struct - Adds ServerURL as separate field in WebhookEvent - Populates ServerURL directly when sending webhooks using configrepository.GetServerURL() - Updates all tests to expect new structure This provides the same functionality (server URL in all webhooks) while correctly treating it as configuration rather than status. Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Add omitempty tag to ServerURL field in WebhookEvent struct Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Fix webhook duplication by moving status to eventData for all events Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Restore type safety to webhook EventData using proper typed structs Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Move ServerURL from top-level WebhookEvent to eventData for all webhook types Co-authored-by: gabek <414923+gabek@users.noreply.github.com> * Update core/webhooks/webhooks.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Create BaseWebhookData struct for common webhook fields using struct embedding Co-authored-by: gabek <414923+gabek@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gabek <414923+gabek@users.noreply.github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
32 lines
895 B
Go
32 lines
895 B
Go
package webhooks
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/owncast/owncast/models"
|
|
"github.com/owncast/owncast/persistence/configrepository"
|
|
"github.com/teris-io/shortid"
|
|
)
|
|
|
|
// SendStreamStatusEvent will send all webhook destinations the current stream status.
|
|
func SendStreamStatusEvent(eventType models.EventType) {
|
|
sendStreamStatusEvent(eventType, shortid.MustGenerate(), time.Now())
|
|
}
|
|
|
|
func sendStreamStatusEvent(eventType models.EventType, id string, timestamp time.Time) {
|
|
configRepository := configrepository.Get()
|
|
|
|
SendEventToWebhooks(WebhookEvent{
|
|
Type: eventType,
|
|
EventData: map[string]interface{}{
|
|
"id": id,
|
|
"name": configRepository.GetServerName(),
|
|
"summary": configRepository.GetServerSummary(),
|
|
"streamTitle": configRepository.GetStreamTitle(),
|
|
"status": getStatus(),
|
|
"serverURL": getServerURL(),
|
|
"timestamp": timestamp,
|
|
},
|
|
})
|
|
}
|