audon/webhooks.go

36 wiersze
986 B
Go

package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/livekit/protocol/auth"
"github.com/livekit/protocol/webhook"
)
func livekitWebhookHandler(c echo.Context) error {
authProvider := auth.NewSimpleKeyProvider(mainConfig.Livekit.APIKey, mainConfig.Livekit.APISecret)
event, err := webhook.ReceiveWebhookEvent(c.Request(), authProvider)
if err == webhook.ErrNoAuthHeader {
return echo.NewHTTPError(http.StatusForbidden)
}
if event.GetEvent() == webhook.EventRoomFinished {
roomID := event.GetRoom().GetName()
if err := mainValidator.Var(&roomID, "required,printascii"); err == nil {
room, err := findRoomByID(c.Request().Context(), roomID)
if err == nil && room.EndedAt.IsZero() {
if err := endRoom(c.Request().Context(), room); err != nil {
c.Logger().Error(err)
return echo.NewHTTPError(http.StatusInternalServerError)
}
}
}
return c.NoContent(http.StatusOK)
}
return echo.NewHTTPError(http.StatusNotFound)
}