'Returns a router for a given HTTP request.'

def MatchRouter(self, request):

    router = api_auth_manager.API_AUTH_MGR.GetRouterForUser(request.user)
    routing_map = self._GetRoutingMap(router)
    matcher = routing_map.bind(('%s:%s' % (request.environ['SERVER_NAME'], request.environ['SERVER_PORT'])))
    try:
        match = matcher.match(request.path, request.method)
    except werkzeug_exceptions.NotFound:
        raise ApiCallRouterNotFoundError(('No    API    router    was    found    for    (%s)    %s' % (request.path, request.method)))
    (router_method_metadata, route_args_dict) = match
    return (router, router_method_metadata, self._GetArgsFromRequest(request, router_method_metadata, route_args_dict))
