Skip to content
Snippets Groups Projects
Commit 7f40fa1d authored by Kegan Dougal's avatar Kegan Dougal
Browse files

Added a -w flag which will host the web client if specified. Currently this...

Added a -w flag which will host the web client if specified. Currently this just delegates to the webclient RestServlet.
parent ebfc4389
No related branches found
No related tags found
No related merge requests found
...@@ -126,6 +126,8 @@ def setup(): ...@@ -126,6 +126,8 @@ def setup():
parser.add_argument('--pid-file', dest="pid", help="When running as a " parser.add_argument('--pid-file', dest="pid", help="When running as a "
"daemon, the file to store the pid in", "daemon, the file to store the pid in",
default="hs.pid") default="hs.pid")
parser.add_argument("-w", "--webclient", dest="webclient",
action="store_true", help="Host the web client.")
args = parser.parse_args() args = parser.parse_args()
verbosity = int(args.verbose) if args.verbose else None verbosity = int(args.verbose) if args.verbose else None
...@@ -147,7 +149,7 @@ def setup(): ...@@ -147,7 +149,7 @@ def setup():
# the replication layer # the replication layer
hs.get_federation() hs.get_federation()
hs.register_servlets() hs.register_servlets(host_web_client=args.webclient)
hs.get_http_server().start_listening(args.port) hs.get_http_server().start_listening(args.port)
......
...@@ -15,9 +15,11 @@ ...@@ -15,9 +15,11 @@
from . import ( from . import (
room, events, register, login, profile, public, presence, im, directory room, events, register, login, profile, public, presence, im, directory,
webclient
) )
class RestServletFactory(object): class RestServletFactory(object):
""" A factory for creating REST servlets. """ A factory for creating REST servlets.
...@@ -42,3 +44,7 @@ class RestServletFactory(object): ...@@ -42,3 +44,7 @@ class RestServletFactory(object):
presence.register_servlets(hs, http_server) presence.register_servlets(hs, http_server)
im.register_servlets(hs, http_server) im.register_servlets(hs, http_server)
directory.register_servlets(hs, http_server) directory.register_servlets(hs, http_server)
def register_web_client(self, hs):
http_server = hs.get_http_server()
webclient.register_servlets(hs, http_server)
...@@ -30,48 +30,6 @@ def client_path_pattern(path_regex): ...@@ -30,48 +30,6 @@ def client_path_pattern(path_regex):
return re.compile("^/matrix/client/api/v1" + path_regex) return re.compile("^/matrix/client/api/v1" + path_regex)
class RestServletFactory(object):
""" A factory for creating REST servlets.
These REST servlets represent the entire client-server REST API. Generally
speaking, they serve as wrappers around events and the handlers that
process them.
See synapse.api.events for information on synapse events.
"""
def __init__(self, hs):
http_server = hs.get_http_server()
# You get import errors if you try to import before the classes in this
# file are defined, hence importing here instead.
import room
room.register_servlets(hs, http_server)
import events
events.register_servlets(hs, http_server)
import register
register.register_servlets(hs, http_server)
import profile
profile.register_servlets(hs, http_server)
import public
public.register_servlets(hs, http_server)
import presence
presence.register_servlets(hs, http_server)
import im
im.register_servlets(hs, http_server)
import login
login.register_servlets(hs, http_server)
class RestServlet(object): class RestServlet(object):
""" A Synapse REST Servlet. """ A Synapse REST Servlet.
......
# -*- coding: utf-8 -*-
# Copyright 2014 matrix.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from synapse.rest.base import RestServlet
import logging
import re
logger = logging.getLogger(__name__)
class WebClientRestServlet(RestServlet):
# No PATTERN; we have custom dispatch rules here
def register(self, http_server):
http_server.register_path("GET",
re.compile("^/$"),
self.on_GET_redirect)
http_server.register_path("GET",
re.compile("^/matrix/client$"),
self.on_GET)
def on_GET(self, request):
return (200, "not implemented")
def on_GET_redirect(self, request):
request.setHeader("Location", request.uri + "matrix/client")
return (302, None)
def register_servlets(hs, http_server):
logger.info("Registering web client.")
WebClientRestServlet(hs).register(http_server)
\ No newline at end of file
...@@ -171,7 +171,13 @@ class HomeServer(BaseHomeServer): ...@@ -171,7 +171,13 @@ class HomeServer(BaseHomeServer):
def build_distributor(self): def build_distributor(self):
return Distributor() return Distributor()
def register_servlets(self): def register_servlets(self, host_web_client):
"""Simply building the ServletFactory is sufficient to have it """ Register all servlets associated with this HomeServer.
register."""
self.get_rest_servlet_factory() Args:
host_web_client (bool): True to host the web client as well.
"""
# Simply building the ServletFactory is sufficient to have it register
factory = self.get_rest_servlet_factory()
if host_web_client:
factory.register_web_client(self)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment