diff --git a/mopidy/handler.py b/mopidy/handler.py index a77a17d5..ced96b8a 100644 --- a/mopidy/handler.py +++ b/mopidy/handler.py @@ -55,14 +55,14 @@ class MpdHandler(object): @register(r'^status$') def _status(self): # TODO - return [ - 'volume: 0', - 'repeat: 0', - 'random: 0', - 'single: 0', - 'consume: 0', - 'playlist: 0', - 'playlistlength: 0', - 'xfade: 0', - 'state: stop', - ] + return { + 'volume': 0, + 'repeat': 0, + 'random': 0, + 'single': 0, + 'consume': 0, + 'playlist': 0, + 'playlistlength': 0, + 'xfade': 0, + 'state': 'stop', + } diff --git a/mopidy/session.py b/mopidy/session.py index 1e57ec63..331419f5 100644 --- a/mopidy/session.py +++ b/mopidy/session.py @@ -26,9 +26,14 @@ class MpdSession(asynchat.async_chat): def handle_request(self, input): response = self.handler.handle_request(input) - if response is not None: + if isinstance(response, list): for line in response: self.send_response(line) + elif isinstance(response, dict): + for key, value in response.items(): + self.send_response(u'%s: %s' % (key, value)) + elif response is not None: + self.send_response(response) self.send_response(u'OK') def send_response(self, output): diff --git a/tests/handlertest.py b/tests/handlertest.py index 7222e190..3ca89ad8 100644 --- a/tests/handlertest.py +++ b/tests/handlertest.py @@ -52,4 +52,21 @@ class HandlerTest(unittest.TestCase): def test_status(self): result = self.h._status() - self.assert_(len(result)) + self.assert_('volume' in result) + self.assert_(int(result['volume']) in xrange(0, 101)) + self.assert_('repeat' in result) + self.assert_(int(result['repeat']) in (0, 1)) + self.assert_('random' in result) + self.assert_(int(result['random']) in (0, 1)) + self.assert_('single' in result) + self.assert_(int(result['single']) in (0, 1)) + self.assert_('consume' in result) + self.assert_(int(result['consume']) in (0, 1)) + self.assert_('playlist' in result) + self.assert_(int(result['playlist']) in xrange(0, 2**31)) + self.assert_('playlistlength' in result) + self.assert_(int(result['playlistlength']) >= 0) + self.assert_('xfade' in result) + self.assert_(int(result['xfade']) >= 0) + self.assert_('state' in result) + self.assert_(result['state'] in ('play', 'stop', 'pause'))