def build_score_request(scoring_system, request, context_name=None, rev_id=None,
                        model_name=None):
    """
    Build an :class:`ores.ScoreRequest` from information contained in a
    request.

    :Parameters:
        scoring_system : :class:`ores.ScoringSystem`
            A scoring system to build request with
        request : :class:`flask.Request`
            A web request to extract information from
        context_name : `str`
            The name of the context to perform scoring
        rev_id : int
            The revision ID to score.  Note that multiple IDs can be provided
            in `request.args`
        model_name = `str`
            The name of the model to score.  Note that multiple models can be
            provided in `request.args`
    """
    rev_ids = parse_rev_ids(request, rev_id)
    model_names = parse_model_names(request, model_name)
    precache = 'precache' in request.args
    include_features = 'features' in request.args
    injection_caches = parse_injection(request, rev_id)
    model_info = parse_model_info(request)

    if context_name and context_name in scoring_system and not model_names:
        model_names = scoring_system[context_name].keys()

    # WMF specific solution
    if request.headers.get('X-Client-IP') is None:
        ip = request.remote_addr.strip()
    else:
        ip = request.headers['X-Client-IP'].strip()

    return ScoreRequest(context_name, rev_ids, model_names,
                        precache=precache,
                        include_features=include_features,
                        injection_caches=injection_caches,
                        model_info=model_info,
                        ip=ip)
Build an :class:`ores.ScoreRequest` from information contained in a
    request.

    :Parameters:
        scoring_system : :class:`ores.ScoringSystem`
            A scoring system to build request with
        request : :class:`flask.Request`
            A web request to extract information from
        context_name : `str`
            The name of the context to perform scoring
        rev_id : int
            The revision ID to score.  Note that multiple IDs can be provided
            in `request.args`
        model_name = `str`
            The name of the model to score.  Note that multiple models can be
            provided in `request.args`