MCPcopy Create free account
hub / github.com/devfeel/dotweb / initBindMiddleware

Method initBindMiddleware

dotweb.go:535–589  ·  view source on GitHub ↗

init bind app's middleware to router node

()

Source from the content-addressed store, hash-verified

533
534// init bind app's middleware to router node
535func (app *DotWeb) initBindMiddleware() {
536 router := app.HttpServer.Router().(*router)
537 // bind app middlewares
538 for fullExpress, _ := range router.allRouterExpress {
539 expresses := strings.Split(fullExpress, routerExpressSplit)
540 if len(expresses) < 2 {
541 continue
542 }
543 node := router.getNode(expresses[0], expresses[1])
544 if node == nil {
545 continue
546 }
547
548 node.appMiddlewares = app.Middlewares
549 for _, m := range node.appMiddlewares {
550 if m.HasExclude() && m.ExistsExcludeRouter(node.fullPath) {
551 app.Logger().Debug("DotWeb initBindMiddleware [app] "+fullExpress+" "+reflect.TypeOf(m).String()+" exclude", LogTarget_HttpServer)
552 node.hasExcludeMiddleware = true
553 } else {
554 app.Logger().Debug("DotWeb initBindMiddleware [app] "+fullExpress+" "+reflect.TypeOf(m).String()+" match", LogTarget_HttpServer)
555 }
556 }
557 if len(node.middlewares) > 0 {
558 firstMiddleware := &xMiddleware{}
559 firstMiddleware.SetNext(node.middlewares[0])
560 node.middlewares = append([]Middleware{firstMiddleware}, node.middlewares...)
561 }
562 }
563
564 // bind group middlewares
565 for _, g := range app.HttpServer.groups {
566 if len(g.middlewares) <= 0 {
567 continue
568 }
569 for fullExpress, _ := range g.allRouterExpress {
570 expresses := strings.Split(fullExpress, routerExpressSplit)
571 if len(expresses) < 2 {
572 continue
573 }
574 node := router.getNode(expresses[0], expresses[1])
575 if node == nil {
576 continue
577 }
578 node.groupMiddlewares = g.middlewares
579 for _, m := range node.groupMiddlewares {
580 if m.HasExclude() && m.ExistsExcludeRouter(node.fullPath) {
581 app.Logger().Debug("DotWeb initBindMiddleware [group] "+fullExpress+" "+reflect.TypeOf(m).String()+" exclude", LogTarget_HttpServer)
582 node.hasExcludeMiddleware = true
583 } else {
584 app.Logger().Debug("DotWeb initBindMiddleware [group] "+fullExpress+" "+reflect.TypeOf(m).String()+" match", LogTarget_HttpServer)
585 }
586 }
587 }
588 }
589}
590
591// IncludeDotwebGroup init inner routers which start with /dotweb/
592func (app *DotWeb) IncludeDotwebGroup() {

Callers 1

ListenAndServeMethod · 0.95

Calls 8

LoggerMethod · 0.95
RouterMethod · 0.80
StringMethod · 0.80
HasExcludeMethod · 0.65
ExistsExcludeRouterMethod · 0.65
DebugMethod · 0.65
SetNextMethod · 0.65
getNodeMethod · 0.45

Tested by

no test coverage detected