|
@@ -6,18 +6,26 @@ import (
|
|
|
macaron "gopkg.in/macaron.v1"
|
|
macaron "gopkg.in/macaron.v1"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+type Router interface {
|
|
|
|
|
+ Route(pattern, method string, handlers ...macaron.Handler)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type RouteRegister interface {
|
|
type RouteRegister interface {
|
|
|
Get(string, ...macaron.Handler)
|
|
Get(string, ...macaron.Handler)
|
|
|
Post(string, ...macaron.Handler)
|
|
Post(string, ...macaron.Handler)
|
|
|
Delete(string, ...macaron.Handler)
|
|
Delete(string, ...macaron.Handler)
|
|
|
Put(string, ...macaron.Handler)
|
|
Put(string, ...macaron.Handler)
|
|
|
|
|
+
|
|
|
Group(string, func(RouteRegister), ...macaron.Handler)
|
|
Group(string, func(RouteRegister), ...macaron.Handler)
|
|
|
|
|
+
|
|
|
|
|
+ Register(Router)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func newRouteRegister(rr *macaron.Router) RouteRegister {
|
|
|
|
|
|
|
+func newRouteRegister() RouteRegister {
|
|
|
return &routeRegister{
|
|
return &routeRegister{
|
|
|
- prefix: "",
|
|
|
|
|
- routes: []route{},
|
|
|
|
|
|
|
+ prefix: "",
|
|
|
|
|
+ routes: []route{},
|
|
|
|
|
+ subfixHandlers: []macaron.Handler{},
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -31,56 +39,50 @@ type routeRegister struct {
|
|
|
prefix string
|
|
prefix string
|
|
|
subfixHandlers []macaron.Handler
|
|
subfixHandlers []macaron.Handler
|
|
|
routes []route
|
|
routes []route
|
|
|
|
|
+ groups []*routeRegister
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (rr *routeRegister) Group(pattern string, fn func(rr RouteRegister), handlers ...macaron.Handler) {
|
|
func (rr *routeRegister) Group(pattern string, fn func(rr RouteRegister), handlers ...macaron.Handler) {
|
|
|
group := &routeRegister{
|
|
group := &routeRegister{
|
|
|
prefix: rr.prefix + pattern,
|
|
prefix: rr.prefix + pattern,
|
|
|
- subfixHandlers: handlers,
|
|
|
|
|
- routes: rr.routes,
|
|
|
|
|
|
|
+ subfixHandlers: append(rr.subfixHandlers, handlers...),
|
|
|
|
|
+ routes: []route{},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
fn(group)
|
|
fn(group)
|
|
|
|
|
+ rr.groups = append(rr.groups, group)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (rr *routeRegister) Get(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
- rr.routes = append(rr.routes, route{
|
|
|
|
|
- method: http.MethodGet,
|
|
|
|
|
- pattern: rr.prefix + pattern,
|
|
|
|
|
- handlers: handlers,
|
|
|
|
|
- })
|
|
|
|
|
- println("get: get ", len(rr.routes))
|
|
|
|
|
- rr.routes = rr.routes[:len(rr.routes)-1]
|
|
|
|
|
|
|
+func (rr *routeRegister) Register(router Router) {
|
|
|
|
|
+ for _, r := range rr.routes {
|
|
|
|
|
+ router.Route(r.pattern, r.method, r.handlers...)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for _, g := range rr.groups {
|
|
|
|
|
+ g.Register(router)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (rr *routeRegister) Post(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
|
|
+func (rr *routeRegister) route(pattern, method string, handlers ...macaron.Handler) {
|
|
|
rr.routes = append(rr.routes, route{
|
|
rr.routes = append(rr.routes, route{
|
|
|
- method: http.MethodPost,
|
|
|
|
|
|
|
+ method: method,
|
|
|
pattern: rr.prefix + pattern,
|
|
pattern: rr.prefix + pattern,
|
|
|
- handlers: handlers,
|
|
|
|
|
|
|
+ handlers: append(rr.subfixHandlers, handlers...),
|
|
|
})
|
|
})
|
|
|
- println("get: post ", len(rr.routes))
|
|
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- rr.routes = rr.routes[:len(rr.routes)-1]
|
|
|
|
|
|
|
+func (rr *routeRegister) Get(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
+ rr.route(pattern, http.MethodGet, handlers...)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (rr *routeRegister) Delete(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
- rr.routes = append(rr.routes, route{
|
|
|
|
|
- method: http.MethodDelete,
|
|
|
|
|
- pattern: rr.prefix + pattern,
|
|
|
|
|
- handlers: handlers,
|
|
|
|
|
- })
|
|
|
|
|
- println("get: delete ", len(rr.routes))
|
|
|
|
|
|
|
+func (rr *routeRegister) Post(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
+ rr.route(pattern, http.MethodPost, handlers...)
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- rr.routes = rr.routes[:len(rr.routes)-1]
|
|
|
|
|
|
|
+func (rr *routeRegister) Delete(pattern string, handlers ...macaron.Handler) {
|
|
|
|
|
+ rr.route(pattern, http.MethodDelete, handlers...)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (rr *routeRegister) Put(pattern string, handlers ...macaron.Handler) {
|
|
func (rr *routeRegister) Put(pattern string, handlers ...macaron.Handler) {
|
|
|
- rr.routes = append(rr.routes, route{
|
|
|
|
|
- method: http.MethodPut,
|
|
|
|
|
- pattern: rr.prefix + pattern,
|
|
|
|
|
- handlers: handlers,
|
|
|
|
|
- })
|
|
|
|
|
-
|
|
|
|
|
- rr.routes = rr.routes[:len(rr.routes)-1]
|
|
|
|
|
|
|
+ rr.route(pattern, http.MethodPut, handlers...)
|
|
|
}
|
|
}
|