http: More consistent use of 'request handler'
This commit is contained in:
parent
b44c9a6f9c
commit
6d04aaf3e4
@ -34,42 +34,6 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
|
||||
self.app = None
|
||||
self.websocket_clients = set()
|
||||
|
||||
def _load_extensions(self):
|
||||
request_handlers = []
|
||||
for router_class in self.routers:
|
||||
router = router_class(self.config)
|
||||
request_handlers.extend(router.get_request_handlers())
|
||||
logger.info(
|
||||
'Loaded HTTP extension: %s', router_class.__name__)
|
||||
return request_handlers
|
||||
|
||||
def _create_routes(self):
|
||||
mopidy_dir = os.path.join(os.path.dirname(__file__), 'data')
|
||||
static_dir = self.config['http']['static_dir']
|
||||
|
||||
# either default mopidy or user defined path to files
|
||||
primary_dir = (r'/(.*)', handlers.StaticFileHandler, {
|
||||
'path': static_dir if static_dir else mopidy_dir,
|
||||
'default_filename': 'index.html'
|
||||
})
|
||||
|
||||
routes = self._load_extensions()
|
||||
logger.debug(
|
||||
'HTTP routes from extensions: %s',
|
||||
list((l[0], l[1]) for l in routes)
|
||||
)
|
||||
|
||||
# TODO: Dynamically define all endpoints
|
||||
routes.extend([
|
||||
(r'/mopidy/ws/?', handlers.WebSocketHandler, {'actor': self}),
|
||||
(r'/mopidy/rpc', handlers.JsonRpcHandler, {'actor': self}),
|
||||
(r'/mopidy/(.*)', handlers.StaticFileHandler, {
|
||||
'path': mopidy_dir, 'default_filename': 'mopidy.html'
|
||||
}),
|
||||
primary_dir,
|
||||
])
|
||||
return routes
|
||||
|
||||
def on_start(self):
|
||||
threading.Thread(target=self._startup).start()
|
||||
self._publish_zeroconf()
|
||||
@ -80,7 +44,7 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
|
||||
|
||||
def _startup(self):
|
||||
logger.debug('Starting HTTP server')
|
||||
self.app = tornado.web.Application(self._create_routes())
|
||||
self.app = tornado.web.Application(self._get_request_handlers())
|
||||
self.app.listen(self.port, self.hostname)
|
||||
logger.info(
|
||||
'HTTP server running at http://%s:%s', self.hostname, self.port)
|
||||
@ -97,6 +61,41 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
|
||||
message = json.dumps(event, cls=models.ModelJSONEncoder)
|
||||
handlers.WebSocketHandler.broadcast(self.websocket_clients, message)
|
||||
|
||||
def _get_request_handlers(self):
|
||||
mopidy_dir = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
# Either default Mopidy or user defined path to files
|
||||
static_dir = self.config['http']['static_dir']
|
||||
root_dir = (r'/(.*)', handlers.StaticFileHandler, {
|
||||
'path': static_dir if static_dir else mopidy_dir,
|
||||
'default_filename': 'index.html'
|
||||
})
|
||||
|
||||
request_handlers = self._get_extension_request_handlers()
|
||||
logger.debug(
|
||||
'HTTP routes from extensions: %s',
|
||||
list((l[0], l[1]) for l in request_handlers))
|
||||
|
||||
# TODO: Dynamically define all endpoints
|
||||
request_handlers.extend([
|
||||
(r'/mopidy/ws/?', handlers.WebSocketHandler, {'actor': self}),
|
||||
(r'/mopidy/rpc', handlers.JsonRpcHandler, {'actor': self}),
|
||||
(r'/mopidy/(.*)', handlers.StaticFileHandler, {
|
||||
'path': mopidy_dir, 'default_filename': 'mopidy.html'
|
||||
}),
|
||||
root_dir,
|
||||
])
|
||||
return request_handlers
|
||||
|
||||
def _get_extension_request_handlers(self):
|
||||
request_handlers = []
|
||||
for router_class in self.routers:
|
||||
router = router_class(self.config)
|
||||
request_handlers.extend(router.get_request_handlers())
|
||||
logger.info(
|
||||
'Loaded HTTP extension: %s', router_class.__name__)
|
||||
return request_handlers
|
||||
|
||||
def _publish_zeroconf(self):
|
||||
if not self.zeroconf_name:
|
||||
return
|
||||
|
||||
@ -110,7 +110,7 @@ class DefaultHTTPServerTest(AsyncHTTPTestCase):
|
||||
core.get_version.return_value = mopidy.__version__
|
||||
|
||||
actor_http = actor.HttpFrontend(config=config, core=core)
|
||||
return Application(actor_http._create_routes())
|
||||
return Application(actor_http._get_request_handlers())
|
||||
|
||||
def test_root_should_return_index(self):
|
||||
response = self.fetch('/', method='GET')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user