diff --git a/whipper/command/main.py b/whipper/command/main.py index 88af530..04530c3 100644 --- a/whipper/command/main.py +++ b/whipper/command/main.py @@ -22,7 +22,14 @@ def main(): # set user agent musicbrainzngs.set_useragent("whipper", whipper.__version__, "https://github.com/JoeLametta/whipper") - musicbrainzngs.set_hostname(config.Config().get_musicbrainz_server()) + + try: + server = config.Config().get_musicbrainz_server() + except KeyError, e: + sys.stderr.write('whipper: %s\n' % e.message) + sys.exit() + + musicbrainzngs.set_hostname(server) # register plugins with pkg_resources distributions, _ = pkg_resources.working_set.find_plugins( pkg_resources.Environment([directory.data_path('plugins')]) diff --git a/whipper/common/config.py b/whipper/common/config.py index 4ff75e9..2b7f7cb 100644 --- a/whipper/common/config.py +++ b/whipper/common/config.py @@ -21,7 +21,6 @@ import ConfigParser import codecs import os.path -import re import shutil import tempfile import urllib @@ -78,8 +77,10 @@ class Config: def get_musicbrainz_server(self): server = self.get('musicbrainz', 'server') or 'musicbrainz.org' - server_url = server if re.match(r'^\D*//', server) else '//' + server - return urlparse(server_url).netloc + server_url = urlparse('//' + server) + if server_url.scheme != '' or server_url.path != '': + raise KeyError('Invalid MusicBrainz server: %s' % server) + return server # drive sections diff --git a/whipper/test/test_common_config.py b/whipper/test/test_common_config.py index 74f19a0..cdfdbf2 100644 --- a/whipper/test/test_common_config.py +++ b/whipper/test/test_common_config.py @@ -84,8 +84,11 @@ class ConfigTestCase(tcommon.TestCase): self._config._parser.set('musicbrainz', 'server', '192.168.2.141:5000/hello/world') self._config.write() - self.assertEquals(self._config.get_musicbrainz_server(), - '192.168.2.141:5000', - msg='Correctly strips out path after port number') + self.assertRaises(KeyError, self._config.get_musicbrainz_server) + + self._config._parser.set('musicbrainz', 'server', + 'http://192.168.2.141:5000') + self._config.write() + self.assertRaises(KeyError, self._config.get_musicbrainz_server) self._config._parser.remove_section('musicbrainz')