-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgroup.go
50 lines (40 loc) · 1.72 KB
/
group.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
46
47
48
49
50
package app
import "net/http"
// RouterGroup contains the first path part for a routes group.
type RouterGroup struct {
path string
middlewares []Middleware
}
// Group initiates a routing group.
// All subroutes paths will be prefixed with the group path.
func Group(path string, middlewares ...Middleware) *RouterGroup {
return &RouterGroup{path, middlewares}
}
// Group contains the first path part for a routes subgroup.
func (rg *RouterGroup) Group(path string, middlewares ...Middleware) *RouterGroup {
return &RouterGroup{rg.path + path, middlewares}
}
// Route makes a route for method and path.
func (rg *RouterGroup) Route(method, path string, handler Handler, middlewares ...Middleware) {
rt.Handle(method, rg.path+path, wrapHandler(wrapHandler(handler, middlewares...), rg.middlewares...))
}
// Get makes a route for GET method.
func (rg *RouterGroup) Get(path string, handler Handler, middlewares ...Middleware) {
rg.Route(http.MethodGet, path, handler, middlewares...)
}
// Post makes a route for POST method.
func (rg *RouterGroup) Post(path string, handler Handler, middlewares ...Middleware) {
rg.Route(http.MethodPost, path, handler, middlewares...)
}
// Put makes a route for PUT method.
func (rg *RouterGroup) Put(path string, handler Handler, middlewares ...Middleware) {
rg.Route(http.MethodPut, path, handler, middlewares...)
}
// Patch makes a route for PATCH method.
func (rg *RouterGroup) Patch(path string, handler Handler, middlewares ...Middleware) {
rg.Route(http.MethodPatch, path, handler, middlewares...)
}
// Delete makes a route for DELETE method.
func (rg *RouterGroup) Delete(path string, handler Handler, middlewares ...Middleware) {
rg.Route(http.MethodDelete, path, handler, middlewares...)
}