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