cvvvvv/internal/delivery/http/handler.go

43 lines
846 B
Go

package http
import (
"git.roboces.dev/catalin/cvvvvv/internal/config"
v1 "git.roboces.dev/catalin/cvvvvv/internal/delivery/http/v1"
"git.roboces.dev/catalin/cvvvvv/internal/service"
"git.roboces.dev/catalin/cvvvvv/pkg/limiter"
"github.com/gin-gonic/gin"
)
type Handler struct {
services *service.Services
}
func NewHandler(services *service.Services) *Handler {
return &Handler{
services: services,
}
}
func (h *Handler) Init(cfg *config.Config) *gin.Engine {
// Init gin handler
router := gin.Default()
router.Use(
gin.Recovery(),
gin.Logger(),
limiter.Limit(cfg.Limiter.RPS, cfg.Limiter.Burst, cfg.Limiter.TTL),
corsMiddleware,
)
h.initAPI(router)
return router
}
func (h *Handler) initAPI(router *gin.Engine) {
handlerV1 := v1.NewHandler(h.services)
api := router.Group("/api")
{
handlerV1.Init(api)
}
}