mirror of https://github.com/zulip/zulip.git
management: Extract parse_headers in send_webhook_fixture_message.
This way other devtools such as the integrations development panel could also use the method.
This commit is contained in:
parent
5b4979806c
commit
64b4fd5923
|
@ -9,6 +9,20 @@ from django.test import Client
|
|||
from zerver.lib.management import ZulipBaseCommand, CommandError
|
||||
from zerver.models import get_realm
|
||||
|
||||
def parse_headers(custom_headers: Union[None, str]) -> Union[None, Dict[str, str]]:
|
||||
""" The main aim of this method is be to convert regular HTTP headers into a format that
|
||||
Django prefers. Note: This function throws a ValueError and thus it should be used in a
|
||||
try/except block. """
|
||||
headers = {}
|
||||
if not custom_headers:
|
||||
return None
|
||||
custom_headers_dict = ujson.loads(custom_headers)
|
||||
for header in custom_headers_dict:
|
||||
if len(header.split(" ")) > 1:
|
||||
raise ValueError("custom header '%s' contains a space." % (header,))
|
||||
headers["HTTP_" + header.upper().replace("-", "_")] = str(custom_headers_dict[header])
|
||||
return headers
|
||||
|
||||
class Command(ZulipBaseCommand):
|
||||
help = """
|
||||
Create webhook message based on given fixture
|
||||
|
@ -50,16 +64,8 @@ approach shown above.
|
|||
self.add_realm_args(parser, help="Specify which realm/subdomain to connect to; default is zulip")
|
||||
|
||||
def parse_headers(self, custom_headers: Union[None, str]) -> Union[None, Dict[str, str]]:
|
||||
headers = {}
|
||||
if not custom_headers:
|
||||
return None
|
||||
try:
|
||||
custom_headers_dict = ujson.loads(custom_headers)
|
||||
for header in custom_headers_dict:
|
||||
if len(header.split(" ")) > 1:
|
||||
raise ValueError("custom header '%s' contains a space." % (header,))
|
||||
headers["HTTP_" + header.upper().replace("-", "_")] = str(custom_headers_dict[header])
|
||||
return headers
|
||||
return parse_headers(custom_headers)
|
||||
except ValueError as ve:
|
||||
raise CommandError('Encountered an error while attempting to parse custom headers: {}\n'
|
||||
'Note: all strings must be enclosed within "" instead of \'\''.format(ve))
|
||||
|
|
Loading…
Reference in New Issue