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.app = None
|
||||||
self.websocket_clients = set()
|
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):
|
def on_start(self):
|
||||||
threading.Thread(target=self._startup).start()
|
threading.Thread(target=self._startup).start()
|
||||||
self._publish_zeroconf()
|
self._publish_zeroconf()
|
||||||
@ -80,7 +44,7 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
|
|||||||
|
|
||||||
def _startup(self):
|
def _startup(self):
|
||||||
logger.debug('Starting HTTP server')
|
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)
|
self.app.listen(self.port, self.hostname)
|
||||||
logger.info(
|
logger.info(
|
||||||
'HTTP server running at http://%s:%s', self.hostname, self.port)
|
'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)
|
message = json.dumps(event, cls=models.ModelJSONEncoder)
|
||||||
handlers.WebSocketHandler.broadcast(self.websocket_clients, message)
|
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):
|
def _publish_zeroconf(self):
|
||||||
if not self.zeroconf_name:
|
if not self.zeroconf_name:
|
||||||
return
|
return
|
||||||
|
|||||||
@ -110,7 +110,7 @@ class DefaultHTTPServerTest(AsyncHTTPTestCase):
|
|||||||
core.get_version.return_value = mopidy.__version__
|
core.get_version.return_value = mopidy.__version__
|
||||||
|
|
||||||
actor_http = actor.HttpFrontend(config=config, core=core)
|
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):
|
def test_root_should_return_index(self):
|
||||||
response = self.fetch('/', method='GET')
|
response = self.fetch('/', method='GET')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user