package app import ( "clapclap/internal/acl" "clapclap/internal/apperr" "clapclap/internal/metrics" "clapclap/internal/env" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) func (app *App) ConfigureRouter() { config := cors.Config{ AllowOrigins: []string{env.C.CLIENT_URL, env.C.INTERNAL_ENDPOINT_URL_S3, env.C.FT_API}, AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowHeaders: []string{"Origin", "Content-Type", "Authorization", "Accept"}, AllowCredentials: true, } app.Router = gin.New() app.Router.SetTrustedProxies([]string{"172.20.0.0/16"}) app.Router.Use(gin.Logger()) app.Router.Use(gin.Recovery()) app.Router.Use(cors.New(config)) app.Router.Use(metrics.PrometheusMiddleware()) app.Router.Use(apperr.Middleware) app.Router.Use(acl.NewRateLimiter( env.C.RATE_LIMIT_RPS, env.C.RATE_LIMIT_BURST)) app.ConfigureAuth() app.RegisterApi("/api") }