mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
package webhooks
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"encoding/json"
 | 
						|
	"io"
 | 
						|
)
 | 
						|
 | 
						|
// WebhookData is the data structure for the webhook payload.
 | 
						|
type WebhookData struct {
 | 
						|
	// Event is the event type (e.g. create, update, delete)
 | 
						|
	Event WebhookEvent `json:"event" example:"create"`
 | 
						|
 | 
						|
	// Entity is the entity type (e.g. user, peer, interface)
 | 
						|
	Entity WebhookEntity `json:"entity" example:"user"`
 | 
						|
 | 
						|
	// Identifier is the identifier of the entity
 | 
						|
	Identifier string `json:"identifier" example:"user-123"`
 | 
						|
 | 
						|
	// Payload is the payload of the event
 | 
						|
	Payload any `json:"payload"`
 | 
						|
}
 | 
						|
 | 
						|
// Serialize serializes the WebhookData to JSON and returns it as an io.Reader.
 | 
						|
func (d *WebhookData) Serialize() (io.Reader, error) {
 | 
						|
	data, err := json.Marshal(d)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return bytes.NewReader(data), nil
 | 
						|
}
 | 
						|
 | 
						|
type WebhookEntity = string
 | 
						|
 | 
						|
const (
 | 
						|
	WebhookEntityUser       WebhookEntity = "user"
 | 
						|
	WebhookEntityPeer       WebhookEntity = "peer"
 | 
						|
	WebhookEntityPeerMetric WebhookEntity = "peer_metric"
 | 
						|
	WebhookEntityInterface  WebhookEntity = "interface"
 | 
						|
)
 | 
						|
 | 
						|
type WebhookEvent = string
 | 
						|
 | 
						|
const (
 | 
						|
	WebhookEventCreate     WebhookEvent = "create"
 | 
						|
	WebhookEventUpdate     WebhookEvent = "update"
 | 
						|
	WebhookEventDelete     WebhookEvent = "delete"
 | 
						|
	WebhookEventConnect    WebhookEvent = "connect"
 | 
						|
	WebhookEventDisconnect WebhookEvent = "disconnect"
 | 
						|
)
 |