-
Notifications
You must be signed in to change notification settings - Fork 9
/
helper.go
45 lines (38 loc) · 1.25 KB
/
helper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package web
import (
"github.com/gorilla/mux"
)
// Route is a route represent for query all routes
type Route struct {
Name string `json:"name"`
Methods []string `json:"methods"`
PathTemplate string `json:"path_template"`
PathRegexp string `json:"path_regexp"`
QueriesRegexp []string `json:"queries_regexp"`
QueriesTemplates []string `json:"queries_templates"`
HostTemplate string `json:"host_template"`
}
// GetAllRoutes return all routes
func GetAllRoutes(router *mux.Router) []Route {
routes := make([]Route, 0)
_ = router.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {
pathTemplate, _ := route.GetPathTemplate()
pathRegexp, _ := route.GetPathRegexp()
methods, _ := route.GetMethods()
routeName := route.GetName()
hostTemplate, _ := route.GetHostTemplate()
queriesTemplates, _ := route.GetQueriesTemplates()
queriesRegexp, _ := route.GetQueriesRegexp()
routes = append(routes, Route{
Name: routeName,
Methods: methods,
PathTemplate: pathTemplate,
PathRegexp: pathRegexp,
QueriesRegexp: queriesRegexp,
QueriesTemplates: queriesTemplates,
HostTemplate: hostTemplate,
})
return nil
})
return routes
}