webhook

package
v1.37.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2025 License: Apache-2.0 Imports: 21 Imported by: 9

Documentation

Index

Constants

View Source
const (
	EventRoomStarted       = "room_started"
	EventRoomFinished      = "room_finished"
	EventParticipantJoined = "participant_joined"
	EventParticipantLeft   = "participant_left"
	EventTrackPublished    = "track_published"
	EventTrackUnpublished  = "track_unpublished"
	EventEgressStarted     = "egress_started"
	EventEgressUpdated     = "egress_updated"
	EventEgressEnded       = "egress_ended"
	EventIngressStarted    = "ingress_started"
	EventIngressEnded      = "ingress_ended"
)

Variables

View Source
var (
	ErrNoAuthHeader    = errors.New("authorization header could not be found")
	ErrSecretNotFound  = errors.New("API secret could not be found")
	ErrInvalidChecksum = errors.New("could not verify authenticity of message")
)
View Source
var DefaultResourceURLNotifierConfig = ResourceURLNotifierConfig{
	MaxAge:   10 * time.Second,
	MaxDepth: 200,
}
View Source
var DefaultURLNotifierConfig = URLNotifierConfig{
	NumWorkers: 10,
	QueueSize:  100,
}
View Source
var DefaultWebHookConfig = WebHookConfig{
	URLNotifier:         DefaultURLNotifierConfig,
	ResourceURLNotifier: DefaultResourceURLNotifierConfig,
}

Functions

func Receive

func Receive(r *http.Request, provider auth.KeyProvider) ([]byte, error)

Receive reads and verifies incoming webhook is signed with key/secret pair closes body after reading

func ReceiveWebhookEvent added in v0.13.0

func ReceiveWebhookEvent(r *http.Request, provider auth.KeyProvider) (*livekit.WebhookEvent, error)

ReceiveWebhookEvent reads and verifies incoming webhook, and returns a parsed WebhookEvent

Types

type DefaultNotifier added in v1.5.4

type DefaultNotifier struct {
	// contains filtered or unexported fields
}

func (*DefaultNotifier) QueueNotify added in v1.5.4

func (n *DefaultNotifier) QueueNotify(ctx context.Context, event *livekit.WebhookEvent, opts ...NotifyOption) error

func (*DefaultNotifier) RegisterProcessedHook added in v1.34.0

func (n *DefaultNotifier) RegisterProcessedHook(hook func(ctx context.Context, whi *livekit.WebhookInfo))

func (*DefaultNotifier) SetFilter added in v1.35.0

func (n *DefaultNotifier) SetFilter(params FilterParams)

func (*DefaultNotifier) SetKeys added in v1.35.0

func (n *DefaultNotifier) SetKeys(apiKey, apiSecret string)

func (*DefaultNotifier) Stop added in v1.5.4

func (n *DefaultNotifier) Stop(force bool)

type FilterParams added in v1.35.0

type FilterParams struct {
	IncludeEvents []string
	ExcludeEvents []string
}

type HTTPClientParams added in v1.19.2

type HTTPClientParams struct {
	RetryWaitMin  time.Duration
	RetryWaitMax  time.Duration
	MaxRetries    int
	ClientTimeout time.Duration
}

type NotifyOption added in v1.37.0

type NotifyOption func(*NotifyParams)

func WithExtraWebhooks added in v1.37.0

func WithExtraWebhooks(wh []*livekit.WebhookConfig) NotifyOption

func WithSecret added in v1.37.0

func WithSecret(secret string) NotifyOption

type NotifyParams added in v1.37.0

type NotifyParams struct {
	ExtraWebhooks []*livekit.WebhookConfig
	Secret        string
}

type QueuedNotifier added in v1.5.4

type QueuedNotifier interface {
	RegisterProcessedHook(f func(ctx context.Context, whi *livekit.WebhookInfo))
	SetKeys(apiKey, apiSecret string)
	SetFilter(params FilterParams)
	QueueNotify(ctx context.Context, event *livekit.WebhookEvent, opts ...NotifyOption) error
	Stop(force bool)
}

func NewDefaultNotifier added in v1.5.4

func NewDefaultNotifier(config WebHookConfig, kp auth.KeyProvider) (QueuedNotifier, error)

type ResourceURLNotifier added in v1.35.0

type ResourceURLNotifier struct {
	// contains filtered or unexported fields
}

ResourceURLNotifier is a QueuedNotifier that sends a POST request to a Webhook URL. It queues up events per resource (could be egress, ingress, room, participant, track, etc.) to avoid blocking events of one resource blocking another resource's event(s). It will retry on failure, and will drop events if notification fall too far behind, either in age or queue depth.

func NewResourceURLNotifier added in v1.35.0

func NewResourceURLNotifier(params ResourceURLNotifierParams) *ResourceURLNotifier

func (*ResourceURLNotifier) Process added in v1.35.0

func (r *ResourceURLNotifier) Process(ctx context.Context, queuedAt time.Time, event *livekit.WebhookEvent, params *ResourceURLNotifierParams)

poster interface

func (*ResourceURLNotifier) QueueNotify added in v1.35.0

func (r *ResourceURLNotifier) QueueNotify(ctx context.Context, event *livekit.WebhookEvent, opts ...NotifyOption) error

func (*ResourceURLNotifier) RegisterProcessedHook added in v1.35.0

func (r *ResourceURLNotifier) RegisterProcessedHook(hook func(ctx context.Context, whi *livekit.WebhookInfo))

func (*ResourceURLNotifier) SetFilter added in v1.35.0

func (r *ResourceURLNotifier) SetFilter(params FilterParams)

func (*ResourceURLNotifier) SetKeys added in v1.35.0

func (r *ResourceURLNotifier) SetKeys(apiKey, apiSecret string)

func (*ResourceURLNotifier) Stop added in v1.35.0

func (r *ResourceURLNotifier) Stop(force bool)

type ResourceURLNotifierConfig added in v1.35.0

type ResourceURLNotifierConfig struct {
	MaxAge   time.Duration `yaml:"max_age,omitempty"`
	MaxDepth int           `yaml:"max_depth,omitempty"`
}

type ResourceURLNotifierParams added in v1.35.0

type ResourceURLNotifierParams struct {
	HTTPClientParams
	Logger     logger.Logger
	Timeout    time.Duration
	Config     ResourceURLNotifierConfig
	URL        string
	APIKey     string
	APISecret  string
	FieldsHook func(whi *livekit.WebhookInfo)
	FilterParams
}

type URLNotifier added in v1.5.4

type URLNotifier struct {
	// contains filtered or unexported fields
}

URLNotifier is a QueuedNotifier that sends a POST request to a Webhook URL. It will retry on failure, and will drop events if notification fall too far behind

func NewURLNotifier added in v1.5.4

func NewURLNotifier(params URLNotifierParams) *URLNotifier

func (*URLNotifier) QueueNotify added in v1.5.4

func (n *URLNotifier) QueueNotify(ctx context.Context, event *livekit.WebhookEvent, opts ...NotifyOption) error

func (*URLNotifier) RegisterProcessedHook added in v1.34.0

func (n *URLNotifier) RegisterProcessedHook(hook func(ctx context.Context, whi *livekit.WebhookInfo))

func (*URLNotifier) SetFilter added in v1.35.0

func (n *URLNotifier) SetFilter(params FilterParams)

func (*URLNotifier) SetKeys added in v1.5.4

func (n *URLNotifier) SetKeys(apiKey, apiSecret string)

func (*URLNotifier) Stop added in v1.5.4

func (n *URLNotifier) Stop(force bool)

type URLNotifierConfig added in v1.35.0

type URLNotifierConfig struct {
	NumWorkers int `yaml:"num_workers,omitempty"`
	QueueSize  int `yaml:"queue_size,omitempty"`
}

type URLNotifierParams added in v1.5.4

type URLNotifierParams struct {
	HTTPClientParams
	Logger     logger.Logger
	Config     URLNotifierConfig
	URL        string
	APIKey     string
	APISecret  string
	FieldsHook func(whi *livekit.WebhookInfo)
	FilterParams
}

type WebHookConfig added in v1.35.0

type WebHookConfig struct {
	URLs                []string                  `yaml:"urls,omitempty"`
	APIKey              string                    `yaml:"api_key,omitempty"`
	URLNotifier         URLNotifierConfig         `yaml:"url_notifier,omitempty"`
	ResourceURLNotifier ResourceURLNotifierConfig `yaml:"resource_url_notifier,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳