package web import "github.com/gin-gonic/gin" type Engine struct { *RoutesGroup newContextFun func(ctx *gin.Context) IContext rawEngine *gin.Engine } func New(newContextFun func(ctx *gin.Context) IContext) *Engine { rawE := gin.Default() e := &Engine{ RoutesGroup: newRoutesGroup(&rawE.RouterGroup, newContextFun), newContextFun: newContextFun, rawEngine: rawE, } return e } func (e *Engine) Use(middlewares ...HandlerFunc) { e.rawEngine.Use(getGinHandlerFunWithRequest(e.newContextFun, middlewares...)...) } func (e *Engine) Run(addr string) error { return e.rawEngine.Run(addr) } func (e *Engine) TravelPaths(travelFun func(path string, parentDesc string, method string, handlers ...HandlerFunc)) { for _, c := range e.RoutesGroup.node.child { c.travel("", "", travelFun) } }