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