From 3d5acb3b68af936d1820770d6094d96c65a9c0d3 Mon Sep 17 00:00:00 2001 From: tjpcc Date: Mon, 1 May 2023 22:16:06 -0600 Subject: fix the router.Handler signature --- router.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'router.go') diff --git a/router.go b/router.go index abfee13..2d420d0 100644 --- a/router.go +++ b/router.go @@ -39,18 +39,20 @@ func (r *Router) Route(pattern string, handler Handler) { r.routeAdded = true } -// Handler matches against the request path and dipatches to a route handler. +// Handler builds a Handler which matches the request path and dispatches to a route. // -// If no route matches, it returns a nil response. +// If no route matches, the handler returns a nil response. // Captured path parameters will be stored in the context passed into the handler // and can be retrieved with RouteParams(). -func (r Router) Handler(ctx context.Context, request *Request) *Response { - handler, params := r.Match(request) - if handler == nil { - return nil - } +func (r Router) Handler() Handler { + return HandlerFunc(func(ctx context.Context, request *Request) *Response { + handler, params := r.Match(request) + if handler == nil { + return nil + } - return handler.Handle(context.WithValue(ctx, routeParamsKey, params), request) + return handler.Handle(context.WithValue(ctx, routeParamsKey, params), request) + }) } // Match returns the matched handler and captured path parameters, or (nil, nil). -- cgit v1.2.3