-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathroute.go
More file actions
66 lines (57 loc) · 1.65 KB
/
Copy pathroute.go
File metadata and controls
66 lines (57 loc) · 1.65 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package bast
import "time"
// Route binds an HTTP method + path pattern to a handler.
type Route struct {
Method string
Pattern string
Handler HandlerFunc
Stream StreamHandlerFunc // non-nil when this is a streaming route
Middleware []MiddlewareFunc
Guards []Guard
Timeout time.Duration
MaxBodySize int64
Doc Doc
}
// GET constructs a GET route.
func GET(pattern string, handler HandlerFunc, opts ...RouteOption) Route {
return newRoute("GET", pattern, handler, opts)
}
// POST constructs a POST route.
func POST(pattern string, handler HandlerFunc, opts ...RouteOption) Route {
return newRoute("POST", pattern, handler, opts)
}
// PUT constructs a PUT route.
func PUT(pattern string, handler HandlerFunc, opts ...RouteOption) Route {
return newRoute("PUT", pattern, handler, opts)
}
// PATCH constructs a PATCH route.
func PATCH(pattern string, handler HandlerFunc, opts ...RouteOption) Route {
return newRoute("PATCH", pattern, handler, opts)
}
// DELETE constructs a DELETE route.
func DELETE(pattern string, handler HandlerFunc, opts ...RouteOption) Route {
return newRoute("DELETE", pattern, handler, opts)
}
// STREAM constructs a streaming route. The handler owns the connection for its lifetime.
func STREAM(pattern string, handler StreamHandlerFunc, opts ...RouteOption) Route {
r := Route{
Method: "GET",
Pattern: pattern,
Stream: handler,
}
for _, opt := range opts {
opt(&r)
}
return r
}
func newRoute(method, pattern string, handler HandlerFunc, opts []RouteOption) Route {
r := Route{
Method: method,
Pattern: pattern,
Handler: handler,
}
for _, opt := range opts {
opt(&r)
}
return r
}