mirror of https://github.com/zulip/zulip.git
mobile: Add an endpoint for checking compatibility.
This commit is contained in:
parent
cb1d61cae0
commit
fa02dfdff4
|
@ -368,6 +368,7 @@ def build_custom_checkers(by_lang):
|
||||||
('zerver/middleware.py',
|
('zerver/middleware.py',
|
||||||
'return json_error(exception.to_json_error_msg(), status=status_code)'),
|
'return json_error(exception.to_json_error_msg(), status=status_code)'),
|
||||||
('zerver/tornado/views.py', 'return json_error(result["message"])'),
|
('zerver/tornado/views.py', 'return json_error(result["message"])'),
|
||||||
|
('zerver/views/compatibility.py', 'return json_error("Client is too old")'),
|
||||||
('zerver/views/invite.py',
|
('zerver/views/invite.py',
|
||||||
'return json_error(data=error_data, msg=ret_error)'),
|
'return json_error(data=error_data, msg=ret_error)'),
|
||||||
('zerver/views/streams.py', 'return json_error(property_conversion)'),
|
('zerver/views/streams.py', 'return json_error(property_conversion)'),
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
from __future__ import absolute_import
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
from zerver.lib.test_classes import ZulipTestCase
|
||||||
|
|
||||||
|
class CompatibilityTest(ZulipTestCase):
|
||||||
|
def test_compatibility(self):
|
||||||
|
# type: () -> None
|
||||||
|
result = self.client_get("/compatibility", HTTP_USER_AGENT='ZulipMobile/5.0')
|
||||||
|
self.assert_json_success(result)
|
||||||
|
result = self.client_get("/compatibility", HTTP_USER_AGENT='ZulipInvalid/5.0')
|
||||||
|
self.assert_json_error(result, "Client is too old")
|
|
@ -0,0 +1,14 @@
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
from django.http import HttpResponse, HttpRequest
|
||||||
|
from typing import Any, List, Dict, Optional, Text
|
||||||
|
|
||||||
|
from zerver.lib.response import json_error, json_success
|
||||||
|
from zerver.lib.user_agent import parse_user_agent
|
||||||
|
|
||||||
|
def check_compatibility(request):
|
||||||
|
# type: (HttpRequest) -> HttpResponse
|
||||||
|
user_agent = parse_user_agent(request.META["HTTP_USER_AGENT"])
|
||||||
|
if user_agent['name'] == "ZulipInvalid":
|
||||||
|
return json_error("Client is too old")
|
||||||
|
return json_success()
|
|
@ -18,6 +18,7 @@ from django.contrib.auth.views import (login, password_reset,
|
||||||
import zerver.tornado.views
|
import zerver.tornado.views
|
||||||
import zerver.views
|
import zerver.views
|
||||||
import zerver.views.auth
|
import zerver.views.auth
|
||||||
|
import zerver.views.compatibility
|
||||||
import zerver.views.home
|
import zerver.views.home
|
||||||
import zerver.views.registration
|
import zerver.views.registration
|
||||||
import zerver.views.zephyr
|
import zerver.views.zephyr
|
||||||
|
@ -351,6 +352,9 @@ urls += [
|
||||||
# backends the server allows, to display the proper UI and check for server existence
|
# backends the server allows, to display the proper UI and check for server existence
|
||||||
url(r'^api/v1/get_auth_backends', zerver.views.auth.api_get_auth_backends, name='zerver.views.auth.api_get_auth_backends'),
|
url(r'^api/v1/get_auth_backends', zerver.views.auth.api_get_auth_backends, name='zerver.views.auth.api_get_auth_backends'),
|
||||||
|
|
||||||
|
# used by mobile apps to check if they are compatible with the server
|
||||||
|
url(r'^compatibility$', zerver.views.compatibility.check_compatibility),
|
||||||
|
|
||||||
# This json format view used by the mobile apps accepts a username
|
# This json format view used by the mobile apps accepts a username
|
||||||
# password/pair and returns an API key.
|
# password/pair and returns an API key.
|
||||||
url(r'^api/v1/fetch_api_key$', zerver.views.auth.api_fetch_api_key, name='zerver.views.auth.api_fetch_api_key'),
|
url(r'^api/v1/fetch_api_key$', zerver.views.auth.api_fetch_api_key, name='zerver.views.auth.api_fetch_api_key'),
|
||||||
|
|
Loading…
Reference in New Issue