package registry import ( "net/http" "reflect" "runtime" "github.com/gorilla/handlers" ) // functionName returns the name of the function fn. func functionName(fn interface{}) string { return runtime.FuncForPC(reflect.ValueOf(fn).Pointer()).Name() } // resolveHandlerName attempts to resolve a nice, pretty name for the passed // in handler. func resolveHandlerName(method string, handler http.Handler) string { switch v := handler.(type) { case handlers.MethodHandler: return functionName(v[method]) case http.HandlerFunc: return functionName(v) default: return functionName(handler.ServeHTTP) } }