Accept http.Handler and return http.HandlerFunc
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
diff --git a/route/route.go b/route/route.go
index d0af6ed..bfb22b8 100644
--- a/route/route.go
+++ b/route/route.go
@@ -41,7 +41,7 @@
type Router struct {
rtr *httprouter.Router
prefix string
- instrh func(handlerName string, handler http.Handler) http.Handler
+ instrh func(handlerName string, handler http.Handler) http.HandlerFunc
}
// New returns a new Router.
@@ -52,10 +52,10 @@
}
// WithInstrumentation returns a router with instrumentation support.
-func (r *Router) WithInstrumentation(instrh func(handlerName string, handler http.Handler) http.Handler) *Router {
+func (r *Router) WithInstrumentation(instrh func(handlerName string, handler http.Handler) http.HandlerFunc) *Router {
if r.instrh != nil {
newInstrh := instrh
- instrh = func(handlerName string, handler http.Handler) http.Handler {
+ instrh = func(handlerName string, handler http.Handler) http.HandlerFunc {
return newInstrh(handlerName, r.instrh(handlerName, handler))
}
}
diff --git a/route/route_test.go b/route/route_test.go
index 7b61f22..a4d6d7b 100644
--- a/route/route_test.go
+++ b/route/route_test.go
@@ -120,9 +120,9 @@
router: New(),
want: "",
}, {
- router: New().WithInstrumentation(func(handlerName string, handler http.Handler) http.Handler {
+ router: New().WithInstrumentation(func(handlerName string, handler http.Handler) http.HandlerFunc {
got = handlerName
- return handler
+ return handler.ServeHTTP
}),
want: "/foo",
},
@@ -154,19 +154,19 @@
}, {
router: New().
WithInstrumentation(
- func(handlerName string, handler http.Handler) http.Handler {
+ func(handlerName string, handler http.Handler) http.HandlerFunc {
got = append(got, "1"+handlerName)
- return handler
+ return handler.ServeHTTP
}).
WithInstrumentation(
- func(handlerName string, handler http.Handler) http.Handler {
+ func(handlerName string, handler http.Handler) http.HandlerFunc {
got = append(got, "2"+handlerName)
- return handler
+ return handler.ServeHTTP
}).
WithInstrumentation(
- func(handlerName string, handler http.Handler) http.Handler {
+ func(handlerName string, handler http.Handler) http.HandlerFunc {
got = append(got, "3"+handlerName)
- return handler
+ return handler.ServeHTTP
}),
want: []string{"1/foo", "2/foo", "3/foo"},
},