diff --git a/docs/changelog.rst b/docs/changelog.rst index 01476404..c39f56e7 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -124,6 +124,9 @@ v0.20.0 (UNRELEASED) - Add basic tests for the stream library provider. +- Add support for proxies when doing initial metadata lookup for stream. + (Fixes :issue:`390`) + **Mopidy.js client library** This version has been released to npm as Mopidy.js v0.5.0. diff --git a/mopidy/stream/actor.py b/mopidy/stream/actor.py index 9599d9d3..58fd966a 100644 --- a/mopidy/stream/actor.py +++ b/mopidy/stream/actor.py @@ -20,7 +20,8 @@ class StreamBackend(pykka.ThreadingActor, backend.Backend): self.library = StreamLibraryProvider( backend=self, timeout=config['stream']['timeout'], - blacklist=config['stream']['metadata_blacklist']) + blacklist=config['stream']['metadata_blacklist'], + proxy=config['proxy']) self.playback = backend.PlaybackProvider(audio=audio, backend=self) self.playlists = None @@ -29,9 +30,9 @@ class StreamBackend(pykka.ThreadingActor, backend.Backend): class StreamLibraryProvider(backend.LibraryProvider): - def __init__(self, backend, timeout, blacklist): + def __init__(self, backend, timeout, blacklist, proxy): super(StreamLibraryProvider, self).__init__(backend) - self._scanner = scan.Scanner(timeout=timeout) + self._scanner = scan.Scanner(timeout=timeout, proxy_config=proxy) self._blacklist_re = re.compile( r'^(%s)$' % '|'.join(fnmatch.translate(u) for u in blacklist)) diff --git a/tests/stream/test_library.py b/tests/stream/test_library.py index 7ed871cb..93292376 100644 --- a/tests/stream/test_library.py +++ b/tests/stream/test_library.py @@ -25,19 +25,19 @@ class LibraryProviderTest(unittest.TestCase): self.uri = path_to_uri(path_to_data_dir('song1.wav')) def test_lookup_ignores_unknown_scheme(self): - library = actor.StreamLibraryProvider(self.backend, 1000, []) + library = actor.StreamLibraryProvider(self.backend, 1000, [], {}) self.assertFalse(library.lookup('http://example.com')) def test_lookup_respects_blacklist(self): - library = actor.StreamLibraryProvider(self.backend, 100, [self.uri]) + library = actor.StreamLibraryProvider(self.backend, 10, [self.uri], {}) self.assertEqual([Track(uri=self.uri)], library.lookup(self.uri)) def test_lookup_respects_blacklist_globbing(self): blacklist = [path_to_uri(path_to_data_dir('')) + '*'] - library = actor.StreamLibraryProvider(self.backend, 100, blacklist) + library = actor.StreamLibraryProvider(self.backend, 100, blacklist, {}) self.assertEqual([Track(uri=self.uri)], library.lookup(self.uri)) def test_lookup_converts_uri_metadata_to_track(self): - library = actor.StreamLibraryProvider(self.backend, 100, []) + library = actor.StreamLibraryProvider(self.backend, 100, [], {}) self.assertEqual([Track(length=4406, uri=self.uri)], library.lookup(self.uri))