http: Redirect from root to /mopidy/ if no static_dir app
This commit is contained in:
parent
6596871918
commit
9f925570d2
@ -68,13 +68,16 @@ class HttpFrontend(pykka.ThreadingActor, CoreListener):
|
|||||||
request_handlers.extend(self._get_static_request_handlers())
|
request_handlers.extend(self._get_static_request_handlers())
|
||||||
|
|
||||||
# Either default Mopidy or user defined path to files
|
# Either default Mopidy or user defined path to files
|
||||||
static_dir = self.config['http']['static_dir']
|
if self.config['http']['static_dir']:
|
||||||
data_dir = os.path.join(os.path.dirname(__file__), 'data')
|
request_handlers.append((r'/(.*)', handlers.StaticFileHandler, {
|
||||||
root_handler = (r'/(.*)', handlers.StaticFileHandler, {
|
'path': self.config['http']['static_dir'],
|
||||||
'path': static_dir if static_dir else data_dir,
|
'default_filename': 'index.html',
|
||||||
'default_filename': 'index.html'
|
}))
|
||||||
})
|
else:
|
||||||
request_handlers.append(root_handler)
|
request_handlers.append((r'/', tornado.web.RedirectHandler, {
|
||||||
|
'url': '/mopidy/',
|
||||||
|
'permanent': False,
|
||||||
|
}))
|
||||||
|
|
||||||
logger.debug(
|
logger.debug(
|
||||||
'HTTP routes from extensions: %s',
|
'HTTP routes from extensions: %s',
|
||||||
|
|||||||
@ -1,30 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Mopidy</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="mopidy.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="box focus">
|
|
||||||
<h1>Mopidy</h1>
|
|
||||||
|
|
||||||
<p>This web server is a part of the Mopidy music server. To learn more
|
|
||||||
about Mopidy, please visit
|
|
||||||
<a href="http://www.mopidy.com/">www.mopidy.com</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="box">
|
|
||||||
<h2>Static content serving</h2>
|
|
||||||
|
|
||||||
<p>To see your own content instead of this placeholder page, change the
|
|
||||||
config value <tt>http/static_dir</tt> to point to the directory
|
|
||||||
containing your static files. This can be used to host e.g. a pure
|
|
||||||
HTML/CSS/JavaScript Mopidy client.</p>
|
|
||||||
|
|
||||||
<p>If you replace this page with your own content, the Mopidy resources
|
|
||||||
and APIs at <tt>/mopidy/</tt> will still be available.</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -39,21 +39,31 @@ class HttpServerTest(tornado.testing.AsyncHTTPTestCase):
|
|||||||
return tornado.web.Application(http_frontend._get_request_handlers())
|
return tornado.web.Application(http_frontend._get_request_handlers())
|
||||||
|
|
||||||
|
|
||||||
class RootAppTest(HttpServerTest):
|
class RootRedirectTest(HttpServerTest):
|
||||||
def test_should_return_index(self):
|
def test_should_redirect_to_mopidy_app(self):
|
||||||
response = self.fetch('/', method='GET')
|
response = self.fetch('/', method='GET', follow_redirects=False)
|
||||||
|
|
||||||
self.assertIn(
|
self.assertEqual(response.code, 302)
|
||||||
'This web server is a part of the Mopidy music server.',
|
self.assertEqual(response.headers['Location'], '/mopidy/')
|
||||||
tornado.escape.to_unicode(response.body))
|
|
||||||
self.assertEqual(
|
|
||||||
response.headers['X-Mopidy-Version'], mopidy.__version__)
|
class LegacyStaticDirAppTest(HttpServerTest):
|
||||||
self.assertEqual(response.headers['Cache-Control'], 'no-cache')
|
def get_config(self):
|
||||||
|
config = super(LegacyStaticDirAppTest, self).get_config()
|
||||||
|
config['http']['static_dir'] = os.path.dirname(__file__)
|
||||||
|
return config
|
||||||
|
|
||||||
|
def test_should_return_index(self):
|
||||||
|
response = self.fetch('/', method='GET', follow_redirects=False)
|
||||||
|
|
||||||
|
self.assertEqual(response.code, 404, 'No index.html in this dir')
|
||||||
|
|
||||||
def test_should_return_static_files(self):
|
def test_should_return_static_files(self):
|
||||||
response = self.fetch('/mopidy.css', method='GET')
|
response = self.fetch('/test_server.py', method='GET')
|
||||||
|
|
||||||
self.assertIn('html {', tornado.escape.to_unicode(response.body))
|
self.assertIn(
|
||||||
|
'test_should_return_static_files',
|
||||||
|
tornado.escape.to_unicode(response.body))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
response.headers['X-Mopidy-Version'], mopidy.__version__)
|
response.headers['X-Mopidy-Version'], mopidy.__version__)
|
||||||
self.assertEqual(response.headers['Cache-Control'], 'no-cache')
|
self.assertEqual(response.headers['Cache-Control'], 'no-cache')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user