mirror of
https://github.com/zulip/zulip.git
synced 2025-11-13 02:17:19 +00:00
request: Extract out methods from 'scheduled_messages' to reuse.
This is a prep commit that extracts the following two methods from '/actions/scheduled_messages' to reuse in the next commit. * extract_stream_id * extract_direct_message_recipient_ids The 'to' parameter for 'POST /typing' will follow the same pattern in the next commit as we currently have for the 'to' parameter in 'POST /scheduled_messages', so we can reuse these functions.
This commit is contained in:
committed by
Tim Abbott
parent
39ec5b9f66
commit
8b12cc606a
31
zerver/lib/recipient_parsing.py
Normal file
31
zerver/lib/recipient_parsing.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from typing import List
|
||||
|
||||
import orjson
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
|
||||
|
||||
def extract_stream_id(req_to: str) -> int:
|
||||
# Recipient should only be a single stream ID.
|
||||
try:
|
||||
stream_id = int(req_to)
|
||||
except ValueError:
|
||||
raise JsonableError(_("Invalid data type for stream ID"))
|
||||
return stream_id
|
||||
|
||||
|
||||
def extract_direct_message_recipient_ids(req_to: str) -> List[int]:
|
||||
try:
|
||||
user_ids = orjson.loads(req_to)
|
||||
except orjson.JSONDecodeError:
|
||||
user_ids = req_to
|
||||
|
||||
if not isinstance(user_ids, list):
|
||||
raise JsonableError(_("Invalid data type for recipients"))
|
||||
|
||||
for user_id in user_ids:
|
||||
if not isinstance(user_id, int):
|
||||
raise JsonableError(_("Recipient list may only contain user IDs"))
|
||||
|
||||
return list(set(user_ids))
|
||||
Reference in New Issue
Block a user