crashlytics: Strengthen types using WildValue.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2021-12-16 22:03:22 -08:00 committed by Tim Abbott
parent be781f19e6
commit 2a0bc2d1c9

View File

@ -1,11 +1,10 @@
# Webhooks for external integrations.
from typing import Any, Dict
from django.http import HttpRequest, HttpResponse
from zerver.decorator import webhook_view
from zerver.lib.request import REQ, has_request_variables
from zerver.lib.response import json_success
from zerver.lib.validator import WildValue, check_int, check_string, to_wild_value
from zerver.lib.webhooks.common import check_send_webhook_message
from zerver.models import UserProfile
@ -23,7 +22,7 @@ VERIFICATION_EVENT = "verification"
def api_crashlytics_webhook(
request: HttpRequest,
user_profile: UserProfile,
payload: Dict[str, Any] = REQ(argument_type="body"),
payload: WildValue = REQ(argument_type="body", converter=to_wild_value),
) -> HttpResponse:
event = payload["event"]
if event == VERIFICATION_EVENT:
@ -32,12 +31,12 @@ def api_crashlytics_webhook(
else:
issue_body = payload["payload"]
subject = CRASHLYTICS_TOPIC_TEMPLATE.format(
display_id=issue_body["display_id"],
title=issue_body["title"],
display_id=issue_body["display_id"].tame(check_int),
title=issue_body["title"].tame(check_string),
)
body = CRASHLYTICS_MESSAGE_TEMPLATE.format(
impacted_devices_count=issue_body["impacted_devices_count"],
url=issue_body["url"],
impacted_devices_count=issue_body["impacted_devices_count"].tame(check_int),
url=issue_body["url"].tame(check_string),
)
check_send_webhook_message(request, user_profile, subject, body)