35 lines
819 B
Go
35 lines
819 B
Go
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(parentPath, parentDesc, path string, method string, handlers ...HandlerFunc)) {
|
|
for _, c := range e.RoutesGroup.node.child {
|
|
c.travel("", "", travelFun)
|
|
}
|
|
}
|