def validate_request_legacy()

in glam/api/views.py [0:0]


def validate_request_legacy(**kwargs):
    # TODO: When glam starts sending "product", make it required.
    REQUIRED_QUERY_PARAMETERS = ["channel", "probe", "aggregationLevel"]
    if any([k not in kwargs.keys() for k in REQUIRED_QUERY_PARAMETERS]):
        # Figure out which query parameter is missing.
        missing = set(REQUIRED_QUERY_PARAMETERS) - set(kwargs.keys())
        raise ValidationError(
            "Missing required query parameters: {}".format(", ".join(sorted(missing)))
        )
    validated_data = {}
    validated_data["channel"] = kwargs.get("channel")
    validated_data["aggregation_level"] = kwargs.get("aggregationLevel")
    validated_data["metric"] = kwargs.get("probe")
    validated_data["os"] = kwargs.get("os", "*")
    validated_data["num_versions"] = kwargs.get("versions", 3)
    validated_data["process"] = kwargs.get("process")

    if validated_data["channel"] not in ["beta", "nightly", "release"]:
        raise ValidationError("Invalid channel: {}".format(validated_data["channel"]))

    if validated_data["aggregation_level"] not in ["version", "build_id"]:
        raise ValidationError(
            "Invalid aggregation level: {}".format(validated_data["aggregation_level"])
        )

    if validated_data["os"] not in ["Windows", "Darwin", "Mac", "Linux", "*"]:
        raise ValidationError("Invalid os: {}".format(validated_data["os"]))

    if not isinstance(validated_data["num_versions"], int):
        raise ValidationError(
            "Invalid versions: {}".format(validated_data["num_versions"])
        )

    return validated_data