diff --git a/github_webhook/webhook.py b/github_webhook/webhook.py index d6addf9..d0d019e 100644 --- a/github_webhook/webhook.py +++ b/github_webhook/webhook.py @@ -2,6 +2,7 @@ import hashlib import hmac import logging +import json import six from flask import abort, request @@ -58,7 +59,12 @@ def _postreceive(self): abort(400, "Invalid signature") event_type = _get_header("X-Github-Event") - data = request.get_json() + content_type = _get_header('content-type') + + if content_type == "application/x-www-form-urlencoded": + data = json.loads(request.form.to_dict(flat=True)["payload"]) + else: + data = request.get_json() if data is None: abort(400, "Request body must contain json") @@ -121,7 +127,6 @@ def _format_event(event_type, data): except KeyError: return event_type - # ----------------------------------------------------------------------------- # Copyright 2015 Bloomberg Finance L.P. #