forked from MirrorHub/synapse
Add RegisterFallbackResource to /_matrix/static/client/register
Try to keep both forms of registration logic (native/fallback) close together for sanity.
This commit is contained in:
parent
7367ca42b5
commit
22399d3d8f
4 changed files with 32 additions and 0 deletions
|
@ -18,6 +18,7 @@
|
|||
CLIENT_PREFIX = "/_matrix/client/api/v1"
|
||||
CLIENT_V2_ALPHA_PREFIX = "/_matrix/client/v2_alpha"
|
||||
FEDERATION_PREFIX = "/_matrix/federation/v1"
|
||||
STATIC_PREFIX = "/_matrix/static"
|
||||
WEB_CLIENT_PREFIX = "/_matrix/client"
|
||||
CONTENT_REPO_PREFIX = "/_matrix/content"
|
||||
SERVER_KEY_PREFIX = "/_matrix/key/v1"
|
||||
|
|
|
@ -125,6 +125,8 @@ class SynapseHomeServer(HomeServer):
|
|||
(MEDIA_PREFIX, self.get_resource_for_media_repository()),
|
||||
(APP_SERVICE_PREFIX, self.get_resource_for_app_services()),
|
||||
]
|
||||
desired_tree += self.get_resource_for_client().get_extra_resources(self)
|
||||
|
||||
if web_client:
|
||||
logger.info("Adding the web client.")
|
||||
desired_tree.append((WEB_CLIENT_PREFIX,
|
||||
|
|
|
@ -28,6 +28,14 @@ class ClientV1RestResource(JsonResource):
|
|||
JsonResource.__init__(self, hs)
|
||||
self.register_servlets(self, hs)
|
||||
|
||||
def get_extra_resources(self, hs):
|
||||
# some parts of client v1 need to produce HTML as the output (e.g.
|
||||
# fallback pages) but we can only produce JSON output. In an effort to
|
||||
# keep similar logic close together, we'll call through to any servlet
|
||||
# which requires HTML output.
|
||||
register_resources = register.get_prefixes_and_resources(hs)
|
||||
return register_resources
|
||||
|
||||
@staticmethod
|
||||
def register_servlets(client_resource, hs):
|
||||
room.register_servlets(hs, client_resource)
|
||||
|
|
|
@ -18,10 +18,12 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.api.errors import SynapseError, Codes
|
||||
from synapse.api.constants import LoginType
|
||||
from synapse.api.urls import STATIC_PREFIX
|
||||
from base import ClientV1RestServlet, client_path_pattern
|
||||
import synapse.util.stringutils as stringutils
|
||||
|
||||
from synapse.util.async import run_on_reactor
|
||||
from twisted.web.resource import Resource
|
||||
|
||||
from hashlib import sha1
|
||||
import hmac
|
||||
|
@ -305,6 +307,16 @@ class RegisterRestServlet(ClientV1RestServlet):
|
|||
})
|
||||
|
||||
|
||||
class RegisterFallbackResource(Resource):
|
||||
|
||||
def __init__(self, hs):
|
||||
Resource.__init__(self) # Resource is an old-style class :(
|
||||
self.hs = hs
|
||||
|
||||
def render_GET(self, request):
|
||||
return "NOT_YET_IMPLEMENTED"
|
||||
|
||||
|
||||
def _parse_json(request):
|
||||
try:
|
||||
content = json.loads(request.content.read())
|
||||
|
@ -315,5 +327,14 @@ def _parse_json(request):
|
|||
raise SynapseError(400, "Content not JSON.")
|
||||
|
||||
|
||||
def get_prefixes_and_resources(hs):
|
||||
return [
|
||||
(
|
||||
STATIC_PREFIX + "/client/register",
|
||||
RegisterFallbackResource(hs)
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
def register_servlets(hs, http_server):
|
||||
RegisterRestServlet(hs).register(http_server)
|
||||
|
|
Loading…
Reference in a new issue