in glam/api/views.py [0:0]
def validate_request_glean(**kwargs):
REQUIRED_QUERY_PARAMETERS = [
"aggregationLevel",
"app_id",
"ping_type",
"probe",
"product",
]
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("app_id")
validated_data["product"] = kwargs.get("product")
validated_data["aggregation_level"] = kwargs.get("aggregationLevel")
validated_data["probe"] = kwargs.get("probe")
validated_data["os"] = kwargs.get("os", "*")
validated_data["num_versions"] = kwargs.get("versions", 3)
validated_data["ping_type"] = kwargs.get("ping_type")
if validated_data["channel"] not in ["beta", "nightly", "release"]:
raise ValidationError("Invalid channel: {}".format(validated_data["channel"]))
if validated_data["product"] not in ["fog", "fenix"]:
raise ValidationError("Invalid product: {}".format(validated_data["product"]))
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",
"*",
"Android",
]:
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