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) } }