diff --git a/mopidy/http/__init__.py b/mopidy/http/__init__.py index 2c794c2b..a465fb64 100644 --- a/mopidy/http/__init__.py +++ b/mopidy/http/__init__.py @@ -34,7 +34,8 @@ class Extension(ext.Extension): raise exceptions.ExtensionError('tornado library not found', e) def setup(self, registry): - from .actor import HttpFrontend, MopidyHttpRouter + from .actor import HttpFrontend + from .handlers import MopidyHttpRouter HttpFrontend.routers = registry['http:router'] diff --git a/mopidy/http/actor.py b/mopidy/http/actor.py index ced2dacc..eb34bfb5 100644 --- a/mopidy/http/actor.py +++ b/mopidy/http/actor.py @@ -11,15 +11,13 @@ import tornado.ioloop import tornado.web import tornado.websocket -from mopidy import http, models, zeroconf +from mopidy import models, zeroconf from mopidy.core import CoreListener from mopidy.http import handlers logger = logging.getLogger(__name__) -mopidy_data_dir = os.path.join(os.path.dirname(__file__), 'data') - class HttpFrontend(pykka.ThreadingActor, CoreListener): routers = [] @@ -65,8 +63,9 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener): def _get_request_handlers(self): # Either default Mopidy or user defined path to files static_dir = self.config['http']['static_dir'] + data_dir = os.path.join(os.path.dirname(__file__), 'data') root_dir = (r'/(.*)', handlers.StaticFileHandler, { - 'path': static_dir if static_dir else mopidy_data_dir, + 'path': static_dir if static_dir else data_dir, 'default_filename': 'index.html' }) @@ -122,16 +121,3 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener): if self.zeroconf_mopidy_http_service: self.zeroconf_mopidy_http_service.unpublish() - - -class MopidyHttpRouter(http.Router): - name = 'mopidy' - - def get_request_handlers(self): - return [ - (r'/ws/?', handlers.WebSocketHandler, {'core': self.core}), - (r'/rpc', handlers.JsonRpcHandler, {'core': self.core}), - (r'/(.*)', handlers.StaticFileHandler, { - 'path': mopidy_data_dir, 'default_filename': 'mopidy.html' - }), - ] diff --git a/mopidy/http/handlers.py b/mopidy/http/handlers.py index 267eb3a0..9bc92953 100644 --- a/mopidy/http/handlers.py +++ b/mopidy/http/handlers.py @@ -1,19 +1,34 @@ from __future__ import unicode_literals import logging +import os import tornado.escape import tornado.web import tornado.websocket import mopidy -from mopidy import core, models +from mopidy import core, http, models from mopidy.utils import jsonrpc logger = logging.getLogger(__name__) +class MopidyHttpRouter(http.Router): + name = 'mopidy' + + def get_request_handlers(self): + data_dir = os.path.join(os.path.dirname(__file__), 'data') + return [ + (r'/ws/?', WebSocketHandler, {'core': self.core}), + (r'/rpc', JsonRpcHandler, {'core': self.core}), + (r'/(.*)', StaticFileHandler, { + 'path': data_dir, 'default_filename': 'mopidy.html' + }), + ] + + def make_jsonrpc_wrapper(core_actor): inspector = jsonrpc.JsonRpcInspector( objects={ diff --git a/tests/http/test_server.py b/tests/http/test_server.py index 1a9da32c..bf89da00 100644 --- a/tests/http/test_server.py +++ b/tests/http/test_server.py @@ -7,7 +7,7 @@ import tornado.wsgi import mopidy from mopidy import http -from mopidy.http import actor +from mopidy.http import actor, handlers class HttpServerTest(tornado.testing.AsyncHTTPTestCase): @@ -25,7 +25,7 @@ class HttpServerTest(tornado.testing.AsyncHTTPTestCase): core.get_version.return_value = mopidy.__version__ http_frontend = actor.HttpFrontend(config=config, core=core) - http_frontend.routers = [actor.MopidyHttpRouter] + http_frontend.routers = [handlers.MopidyHttpRouter] return tornado.web.Application(http_frontend._get_request_handlers())