veza/veza-backend-api/internal/api/routes_webhooks.go

43 lines
1.1 KiB
Go

package api
import (
"context"
"github.com/gin-gonic/gin"
"veza-backend-api/internal/handlers"
"veza-backend-api/internal/services"
"veza-backend-api/internal/workers"
)
// setupWebhookRoutes configure les routes pour les webhooks
func (r *APIRouter) setupWebhookRoutes(router *gin.RouterGroup) {
webhookService := services.NewWebhookService(r.db.GormDB, r.logger, r.config.JWTSecret)
webhookWorker := workers.NewWebhookWorker(
r.db.GormDB,
webhookService,
r.logger,
100,
5,
3,
)
go webhookWorker.Start(context.Background())
webhookHandler := handlers.NewWebhookHandler(webhookService, webhookWorker, r.logger)
webhooks := router.Group("/webhooks")
if r.config.AuthMiddleware != nil {
webhooks.Use(r.config.AuthMiddleware.RequireAuth())
r.applyCSRFProtection(webhooks)
}
{
webhooks.POST("", webhookHandler.RegisterWebhook())
webhooks.GET("", webhookHandler.ListWebhooks())
webhooks.DELETE("/:id", webhookHandler.DeleteWebhook())
webhooks.GET("/stats", webhookHandler.GetWebhookStats())
webhooks.POST("/:id/test", webhookHandler.TestWebhook())
webhooks.POST("/:id/regenerate-key", webhookHandler.RegenerateAPIKey())
}
}