32 lines
586 B
Go
32 lines
586 B
Go
package middleware
|
|
|
|
import (
|
|
"git.xdrm.io/go/aicra/driver"
|
|
"net/http"
|
|
)
|
|
|
|
// CreateRegistry creates an empty registry
|
|
func CreateRegistry() Registry {
|
|
return make(Registry)
|
|
}
|
|
|
|
// Add adds a new middleware for a path
|
|
func (reg Registry) Add(_path string, _element driver.Middleware) {
|
|
reg[_path] = _element
|
|
}
|
|
|
|
// Run executes all middlewares (default browse order)
|
|
func (reg Registry) Run(req http.Request) []string {
|
|
|
|
/* (1) Initialise scope */
|
|
scope := make([]string, 0)
|
|
|
|
/* (2) Execute each middleware */
|
|
for _, mw := range reg {
|
|
mw.Inspect(req, &scope)
|
|
}
|
|
|
|
return scope
|
|
|
|
}
|