43 lines
846 B
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)
|
|
}
|
|
}
|