diff --git a/zerver/lib/webhooks/common.py b/zerver/lib/webhooks/common.py index afb49b96a6..52ffa48bd7 100644 --- a/zerver/lib/webhooks/common.py +++ b/zerver/lib/webhooks/common.py @@ -98,9 +98,10 @@ def check_send_webhook_message( pass def validate_extract_webhook_http_header(request: HttpRequest, header: str, - integration_name: str) -> str: + integration_name: str, + fatal: Optional[bool]=True) -> Optional[str]: extracted_header = request.META.get(DJANGO_HTTP_PREFIX + header) - if extracted_header is None: + if extracted_header is None and fatal: message_body = MISSING_EVENT_HEADER_MESSAGE.format( bot_name=request.user.full_name, request_path=request.path, diff --git a/zerver/webhooks/bitbucket2/view.py b/zerver/webhooks/bitbucket2/view.py index 34c9054616..46304760f0 100644 --- a/zerver/webhooks/bitbucket2/view.py +++ b/zerver/webhooks/bitbucket2/view.py @@ -142,6 +142,7 @@ def get_type(request: HttpRequest, payload: Dict[str, Any]) -> str: # Note that we only need the HTTP header to determine pullrequest events. # We rely on the payload itself to determine the other ones. event_key = validate_extract_webhook_http_header(request, "X_EVENT_KEY", "BitBucket") + assert event_key is not None action = re.match('pullrequest:(?P.*)$', event_key) if action: action_group = action.group('action') diff --git a/zerver/webhooks/reviewboard/view.py b/zerver/webhooks/reviewboard/view.py index aa19eba97b..fcf0a7eb5d 100644 --- a/zerver/webhooks/reviewboard/view.py +++ b/zerver/webhooks/reviewboard/view.py @@ -168,6 +168,7 @@ def api_reviewboard_webhook( ) -> HttpResponse: event_type = validate_extract_webhook_http_header( request, 'X_REVIEWBOARD_EVENT', 'ReviewBoard') + assert event_type is not None body_function = RB_MESSAGE_FUNCTIONS.get(event_type) if body_function is not None: