[tor-commits] [stem/master] Allow plaintext enum value

atagar at torproject.org atagar at torproject.org
Sat Aug 17 20:44:27 UTC 2019


commit 45b98cac45f3f80f6bb319d898ad12775b30823a
Author: Damian Johnson <atagar at 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)





More information about the tor-commits mailing list