mirror of
				https://github.com/owncast/owncast.git
				synced 2025-10-31 18:18:06 +08:00 
			
		
		
		
	 85e7af3d5f
			
		
	
	85e7af3d5f
	
	
	
		
			
			* 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
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package webhooks
 | |
| 
 | |
| import (
 | |
| 	"sync"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/owncast/owncast/core/data"
 | |
| 	"github.com/owncast/owncast/core/user"
 | |
| 	"github.com/owncast/owncast/models"
 | |
| )
 | |
| 
 | |
| // WebhookEvent represents an event sent as a webhook.
 | |
| type WebhookEvent struct {
 | |
| 	EventData interface{}      `json:"eventData,omitempty"`
 | |
| 	Type      models.EventType `json:"type"` // messageSent | userJoined | userNameChange
 | |
| }
 | |
| 
 | |
| // WebhookChatMessage represents a single chat message sent as a webhook payload.
 | |
| type WebhookChatMessage struct {
 | |
| 	User      *user.User `json:"user,omitempty"`
 | |
| 	Timestamp *time.Time `json:"timestamp,omitempty"`
 | |
| 	Body      string     `json:"body,omitempty"`
 | |
| 	RawBody   string     `json:"rawBody,omitempty"`
 | |
| 	ID        string     `json:"id,omitempty"`
 | |
| 	ClientID  uint       `json:"clientId,omitempty"`
 | |
| 	Visible   bool       `json:"visible"`
 | |
| }
 | |
| 
 | |
| // SendEventToWebhooks will send a single webhook event to all webhook destinations.
 | |
| func SendEventToWebhooks(payload WebhookEvent) {
 | |
| 	sendEventToWebhooks(payload, nil)
 | |
| }
 | |
| 
 | |
| func sendEventToWebhooks(payload WebhookEvent, wg *sync.WaitGroup) {
 | |
| 	webhooks := data.GetWebhooksForEvent(payload.Type)
 | |
| 
 | |
| 	for _, webhook := range webhooks {
 | |
| 		// Use wg to track the number of notifications to be sent.
 | |
| 		if wg != nil {
 | |
| 			wg.Add(1)
 | |
| 		}
 | |
| 		addToQueue(webhook, payload, wg)
 | |
| 	}
 | |
| }
 |