commit 45b98cac45f3f80f6bb319d898ad12775b30823a Author: Damian Johnson atagar@torproject.org Date: Sun Jun 23 14:29:14 2019 -0700
Allow plaintext enum value
Our CollecTor module used None to specify plaintext but we should accept the Compression.PLAINTEXT value as well. --- stem/descriptor/collector.py | 22 +++++++++++----------- test/unit/descriptor/collector.py | 5 +++-- 2 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/stem/descriptor/collector.py b/stem/descriptor/collector.py index 7a3d04ff..21c9d91d 100644 --- a/stem/descriptor/collector.py +++ b/stem/descriptor/collector.py @@ -65,7 +65,7 @@ COLLECTOR_URL = 'https://collector.torproject.org/' REFRESH_INDEX_RATE = 3600 # get new index if cached copy is an hour old
-def url(resource, compression = None): +def url(resource, compression = Compression.PLAINTEXT): """ Provides CollecTor url for the given resource.
@@ -84,8 +84,8 @@ def url(resource, compression = None): else: raise ValueError("'%s' isn't a recognized resource type" % resource)
- suffix = compression.extension if compression else '' - return COLLECTOR_URL + '/'.join(path) + suffix + extension = compression.extension if compression not in (None, Compression.PLAINTEXT) else '' + return COLLECTOR_URL + '/'.join(path) + extension
class CollecTor(object): @@ -102,22 +102,22 @@ class CollecTor(object): """
def __init__(self, compression = 'best', retries = 2, timeout = None): + self.compression = Compression.PLAINTEXT + self.retries = retries + self.timeout = timeout + + self._cached_index = None + self._cached_index_at = 0 + if compression == 'best': - self.compression = None
for option in (Compression.LZMA, Compression.BZ2, Compression.GZIP): if option.available: self.compression = option break - else: + elif compression is not None: self.compression = compression
- self.retries = retries - self.timeout = timeout - - self._cached_index = None - self._cached_index_at = 0 - def index(self): """ Provides the archives available in CollecTor. diff --git a/test/unit/descriptor/collector.py b/test/unit/descriptor/collector.py index b2b464ce..6aeda8f0 100644 --- a/test/unit/descriptor/collector.py +++ b/test/unit/descriptor/collector.py @@ -23,6 +23,7 @@ class TestCollector(unittest.TestCase): def test_url(self): self.assertEqual('https://collector.torproject.org/index/index.json', url('index')) self.assertEqual('https://collector.torproject.org/index/index.json', url('index', compression = None)) + self.assertEqual('https://collector.torproject.org/index/index.json', url('index', compression = Compression.PLAINTEXT)) self.assertEqual('https://collector.torproject.org/index/index.json.gz', url('index', compression = Compression.GZIP)) self.assertEqual('https://collector.torproject.org/index/index.json.bz2', url('index', compression = Compression.BZ2)) self.assertEqual('https://collector.torproject.org/index/index.json.xz', url('index', compression = Compression.LZMA)) @@ -35,12 +36,12 @@ class TestCollector(unittest.TestCase): 'path': 'https://collector.torproject.org' }
- collector = CollecTor(compression = None) + collector = CollecTor(compression = Compression.PLAINTEXT) self.assertEqual(expected, collector.index())
@patch(URL_OPEN, Mock(return_value = io.BytesIO(b'not json'))) def test_index_malformed_json(self): - collector = CollecTor(compression = None) + collector = CollecTor(compression = Compression.PLAINTEXT)
if stem.prereq.is_python_3(): self.assertRaisesRegexp(ValueError, 'Expecting value: line 1 column 1', collector.index)