mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
JsonableError has two major benefits over json_error: * It can be raised from anywhere in the codebase, rather than being a return value, which is much more convenient for refactoring, as one doesn't potentially need to change error handling style when extracting a bit of view code to a function. * It is guaranteed to contain the `code` property, which is helpful for API consistency. Various stragglers are not updated because JsonableError requires subclassing in order to specify custom data or HTTP status codes.
21 lines
649 B
Python
21 lines
649 B
Python
from django.http import HttpRequest, HttpResponse
|
|
|
|
from zerver.decorator import internal_notify_view
|
|
from zerver.lib.email_mirror import mirror_email_message
|
|
from zerver.lib.exceptions import JsonableError
|
|
from zerver.lib.request import REQ, has_request_variables
|
|
from zerver.lib.response import json_success
|
|
|
|
|
|
@internal_notify_view(False)
|
|
@has_request_variables
|
|
def email_mirror_message(
|
|
request: HttpRequest,
|
|
rcpt_to: str = REQ(),
|
|
msg_base64: str = REQ(),
|
|
) -> HttpResponse:
|
|
result = mirror_email_message(rcpt_to, msg_base64)
|
|
if result["status"] == "error":
|
|
raise JsonableError(result["msg"])
|
|
return json_success()
|