mirror of https://github.com/zulip/zulip.git
views.py: Create validator for remote server.
This commit is contained in:
parent
329b377e6a
commit
e649c05aed
|
@ -10,12 +10,24 @@ from zerver.decorator import has_request_variables, REQ
|
||||||
from zerver.lib.error_notify import do_report_error
|
from zerver.lib.error_notify import do_report_error
|
||||||
from zerver.lib.push_notifications import send_android_push_notification, \
|
from zerver.lib.push_notifications import send_android_push_notification, \
|
||||||
send_apple_push_notification
|
send_apple_push_notification
|
||||||
|
from zerver.lib.request import JsonableError
|
||||||
from zerver.lib.response import json_error, json_success
|
from zerver.lib.response import json_error, json_success
|
||||||
from zerver.lib.validator import check_dict
|
from zerver.lib.validator import check_dict
|
||||||
from zerver.models import UserProfile, PushDeviceToken, Realm
|
from zerver.models import UserProfile, PushDeviceToken, Realm
|
||||||
|
|
||||||
from typing import Any, Dict, Optional, Union, Text, cast
|
from typing import Any, Dict, Optional, Union, Text, cast
|
||||||
|
|
||||||
|
def validate_entity(entity):
|
||||||
|
# type: (Union[UserProfile, RemoteZulipServer]) -> None
|
||||||
|
if not isinstance(entity, RemoteZulipServer):
|
||||||
|
raise JsonableError(_("Must validate with valid Zulip server API key"))
|
||||||
|
|
||||||
|
def validate_bouncer_token_request(entity, token):
|
||||||
|
# type: (Union[UserProfile, RemoteZulipServer], Text) -> None
|
||||||
|
validate_entity(entity)
|
||||||
|
if token == '' or len(token) > 4096:
|
||||||
|
raise JsonableError(_("Empty or invalid length token"))
|
||||||
|
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def report_error(request, deployment, type=REQ(), report=REQ(validator=check_dict([]))):
|
def report_error(request, deployment, type=REQ(), report=REQ(validator=check_dict([]))):
|
||||||
# type: (HttpRequest, Deployment, Text, Dict[str, Any]) -> HttpResponse
|
# type: (HttpRequest, Deployment, Text, Dict[str, Any]) -> HttpResponse
|
||||||
|
@ -25,11 +37,7 @@ def report_error(request, deployment, type=REQ(), report=REQ(validator=check_dic
|
||||||
def remote_server_register_push(request, entity, user_id=REQ(),
|
def remote_server_register_push(request, entity, user_id=REQ(),
|
||||||
token=REQ(), token_kind=REQ(), ios_app_id=None):
|
token=REQ(), token_kind=REQ(), ios_app_id=None):
|
||||||
# type: (HttpRequest, Union[UserProfile, RemoteZulipServer], int, Text, int, Optional[Text]) -> HttpResponse
|
# type: (HttpRequest, Union[UserProfile, RemoteZulipServer], int, Text, int, Optional[Text]) -> HttpResponse
|
||||||
if not isinstance(entity, RemoteZulipServer):
|
validate_bouncer_token_request(entity, token)
|
||||||
return json_error(_("Must validate with valid Zulip server API key"))
|
|
||||||
if token == '' or len(token) > 4096:
|
|
||||||
return json_error(_("Empty or invalid length token"))
|
|
||||||
|
|
||||||
server = cast(RemoteZulipServer, entity)
|
server = cast(RemoteZulipServer, entity)
|
||||||
|
|
||||||
# If a user logged out on a device and failed to unregister,
|
# If a user logged out on a device and failed to unregister,
|
||||||
|
@ -54,11 +62,7 @@ def remote_server_register_push(request, entity, user_id=REQ(),
|
||||||
def remote_server_unregister_push(request, entity, token=REQ(),
|
def remote_server_unregister_push(request, entity, token=REQ(),
|
||||||
token_kind=REQ(), ios_app_id=None):
|
token_kind=REQ(), ios_app_id=None):
|
||||||
# type: (HttpRequest, Union[UserProfile, RemoteZulipServer], Text, int, Optional[Text]) -> HttpResponse
|
# type: (HttpRequest, Union[UserProfile, RemoteZulipServer], Text, int, Optional[Text]) -> HttpResponse
|
||||||
if not isinstance(entity, RemoteZulipServer):
|
validate_bouncer_token_request(entity, token)
|
||||||
return json_error(_("Must validate with valid Zulip server API key"))
|
|
||||||
if token == '' or len(token) > 4096:
|
|
||||||
return json_error(_("Empty or invalid length token"))
|
|
||||||
|
|
||||||
server = cast(RemoteZulipServer, entity)
|
server = cast(RemoteZulipServer, entity)
|
||||||
deleted = RemotePushDeviceToken.objects.filter(token=token,
|
deleted = RemotePushDeviceToken.objects.filter(token=token,
|
||||||
kind=token_kind,
|
kind=token_kind,
|
||||||
|
|
Loading…
Reference in New Issue