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

Method Use

group.go:51–78  ·  view source on GitHub ↗

Use implements `Router#Use()` for sub-routes within the Group.

(ms ...Middleware)

Source from the content-addressed store, hash-verified

49
50// Use implements `Router#Use()` for sub-routes within the Group.
51func (g *xGroup) Use(ms ...Middleware) Group {
52 if len(ms) <= 0 {
53 return g
54 }
55
56 // deepcopy middleware structs to avoid middleware chain misbehaving
57 m := []Middleware{}
58 for _, om := range ms {
59 //newM := reflect.New(reflect.ValueOf(om).Elem().Type()).Interface().(Middleware)
60 newElem := reflect.New(reflect.TypeOf(om).Elem())
61 newElem.Elem().Set(reflect.ValueOf(om).Elem())
62 newM := newElem.Interface().(Middleware)
63
64 newM.SetNext(nil)
65 m = append(m, newM)
66 }
67 step := len(g.middlewares) - 1
68 for i := range m {
69 if m[i] != nil {
70 if step >= 0 {
71 g.middlewares[step].SetNext(m[i])
72 }
73 g.middlewares = append(g.middlewares, m[i])
74 step++
75 }
76 }
77 return g
78}
79
80// DELETE implements `Router#DELETE()` for sub-routes within the Group.
81func (g *xGroup) DELETE(path string, h HttpHandle) RouterNode {

Callers

nothing calls this directly

Calls 2

SetMethod · 0.65
SetNextMethod · 0.65

Tested by

no test coverage detected