feat(webhooks): add route to get all available webhook events

This commit is contained in:
kolaente 2023-09-14 12:21:20 +02:00
parent eb1b9247ad
commit 96ccf6b923
Signed by untrusted user: konrad
GPG Key ID: F40E70337AB24C9B
3 changed files with 40 additions and 0 deletions

View File

@ -20,6 +20,7 @@ import (
"code.vikunja.io/api/pkg/events"
"code.vikunja.io/api/pkg/user"
"code.vikunja.io/web"
"sort"
"sync"
"time"
"xorm.io/xorm"
@ -71,6 +72,17 @@ func RegisterEventForWebhook(event WebhookEvent) {
})
}
func GetAvailableWebhookEvents() []string {
evts := []string{}
for e := range availableWebhookEvents {
evts = append(evts, e)
}
sort.Strings(evts)
return evts
}
func (w *Webhook) Create(s *xorm.Session, a web.Auth) (err error) {
// TODO: check valid webhook events
w.CreatedByID = a.GetID()

View File

@ -0,0 +1,27 @@
// Vikunja is a to-do list application to facilitate your life.
// Copyright 2018-present Vikunja and contributors. All rights reserved.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public Licensee as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public Licensee for more details.
//
// You should have received a copy of the GNU Affero General Public Licensee
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package v1
import (
"code.vikunja.io/api/pkg/models"
"github.com/labstack/echo/v4"
"net/http"
)
func GetAvailableWebhookEvents(c echo.Context) error {
return c.JSON(http.StatusOK, models.GetAvailableWebhookEvents())
}

View File

@ -585,6 +585,7 @@ func registerAPIRoutes(a *echo.Group) {
a.PUT("/project/:project/webhooks", webhookProvider.CreateWeb)
a.DELETE("/project/:project/webhooks/:webhook", webhookProvider.DeleteWeb)
a.POST("/project/:project/webhooks/:webhook", webhookProvider.UpdateWeb)
a.GET("/webhooks/events", apiv1.GetAvailableWebhookEvents)
}
func registerMigrations(m *echo.Group) {