package router import ( "epur-pay/cache" "epur-pay/pkg/config" "epur-pay/pkg/dapi" "github.com/gin-contrib/gzip" "github.com/gin-gonic/gin" cors "github.com/itsjamie/gin-cors" ) func Router() *gin.Engine { gin.SetMode(config.Cf.Common.RunMode) engine := gin.New() engine.Use(Logs(), cors.Middleware(cors.Config{ ValidateHeaders: false, Origins: "*", RequestHeaders: "*", ExposedHeaders: "*", Methods: "*", MaxAge: 0, Credentials: false, }), gzip.Gzip(gzip.DefaultCompression), IPBlackList(), gin.Recovery()) goApi := engine.Group("/api/v1") NewRouterFunc() for index, item := range cache.Global.Routers { var apiRouter *gin.RouterGroup if !item.Leaf { apiRouter = goApi.Group(item.Path) for indexChild, itemChild := range item.Child { item.Child[indexChild].Params.(*dapi.InParams).SaveEvent = itemChild.Name switch itemChild.Method { case "POST": apiRouter.POST(itemChild.Path, dapi.ApiDecorator(itemChild.F, itemChild.Params.(*dapi.InParams))) default: apiRouter.GET(itemChild.Path, dapi.ApiDecorator(itemChild.F, itemChild.Params.(*dapi.InParams))) } } } else { apiRouter = goApi cache.Global.Routers[index].Params.(*dapi.InParams).SaveEvent = item.Name switch item.Method { case "POST": apiRouter.POST(item.Path, dapi.ApiDecorator(item.F, item.Params.(*dapi.InParams))) default: apiRouter.GET(item.Path, dapi.ApiDecorator(item.F, item.Params.(*dapi.InParams))) } } } return engine }