mirror of
https://github.com/zulip/zulip.git
synced 2025-11-12 18:06:44 +00:00
To avoid the potential for introducing regressions here, we carefully pass a default to REQ or not based on how the existing webhook's parsing code worked. In the longer term, we'll want to make the behavior consistent.
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
# Webhooks for external integrations.
|
|
from __future__ import absolute_import
|
|
from zerver.models import get_client
|
|
from zerver.lib.actions import check_send_message
|
|
from zerver.lib.response import json_success, json_error
|
|
from zerver.lib.validator import check_dict
|
|
from zerver.decorator import REQ, has_request_variables, api_key_only_webhook_view
|
|
|
|
|
|
@api_key_only_webhook_view
|
|
@has_request_variables
|
|
def api_newrelic_webhook(request, user_profile, stream=REQ(),
|
|
alert=REQ(validator=check_dict([]), default=None),
|
|
deployment=REQ(validator=check_dict([]), default=None)):
|
|
if alert:
|
|
# Use the message as the subject because it stays the same for
|
|
# "opened", "acknowledged", and "closed" messages that should be
|
|
# grouped.
|
|
subject = alert['message']
|
|
content = "%(long_description)s\n[View alert](%(alert_url)s)" % (alert)
|
|
elif deployment:
|
|
subject = "%s deploy" % (deployment['application_name'])
|
|
content = """`%(revision)s` deployed by **%(deployed_by)s**
|
|
%(description)s
|
|
|
|
%(changelog)s""" % (deployment)
|
|
else:
|
|
return json_error("Unknown webhook request")
|
|
|
|
check_send_message(user_profile, get_client("ZulipNewRelicWebhook"), "stream",
|
|
[stream], subject, content)
|
|
return json_success()
|