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"}, },