[tor-commits] [stem/master] Using server descriptor when parsing

atagar at torproject.org atagar at torproject.org
Mon Mar 26 00:10:01 UTC 2012


commit 3b657b57b4cb4ce5304145a7a55051e758cf9cbd
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Mar 23 09:28:55 2012 -0700

    Using server descriptor when parsing
    
    Parsing server descriptors via the new server descriptor class. This breaks the
    tests and will need quite a bit of work. :)
---
 stem/descriptor/__init__.py          |    2 +-
 stem/descriptor/descriptor.py        |   14 ++++++++++++--
 stem/descriptor/server_descriptor.py |    6 +++---
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 33970ef..0a5ba81 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -2,5 +2,5 @@
 Utilities for parsing and processing descriptor data.
 """
 
-__all__ = ["descriptor", "reader"]
+__all__ = ["descriptor", "reader", "server_descriptor"]
 
diff --git a/stem/descriptor/descriptor.py b/stem/descriptor/descriptor.py
index a89e5e5..f535afc 100644
--- a/stem/descriptor/descriptor.py
+++ b/stem/descriptor/descriptor.py
@@ -4,6 +4,8 @@ Common functionality for descriptors.
 
 import os
 
+import stem.descriptor.server_descriptor
+
 def parse_descriptors(path, descriptor_file):
   """
   Provides an iterator for the descriptors within a given file.
@@ -28,13 +30,21 @@ def parse_descriptors(path, descriptor_file):
   filename = os.path.basename(path)
   
   if filename == "cached-descriptors":
-    pass # server descriptors from tor's data directory
+    # server descriptors from tor's data directory
+    while descriptor_file:
+      yield stem.descriptor.server_descriptor.parse_server_descriptors_v2(path, descriptor_file)
+    
+    return
   
   first_line = descriptor_file.readline()
   descriptor_file.seek(0)
   
   if first_line.startswith("router "):
-    pass # server descriptor
+    # server descriptor
+    while descriptor_file:
+      yield stem.descriptor.server_descriptor.parse_server_descriptors_v2(path, descriptor_file)
+    
+    return
   
   # TODO: implement actual descriptor type recognition and parsing
   # TODO: add integ test for non-descriptor text content
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index a60e9f2..40124f5 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -14,7 +14,7 @@ import datetime
 import stem.version
 import stem.util.connection
 import stem.util.tor_tools
-from stem.descriptor.descriptor import Descriptor
+import stem.descriptor.descriptor
 
 ENTRY_START = "router"
 ENTRY_END   = "router-signature"
@@ -164,7 +164,7 @@ def _get_psudo_pgp_block(remaining_contents):
   else:
     return (None, None)
 
-class ServerDescriptorV2(Descriptor):
+class ServerDescriptorV2(stem.descriptor.descriptor.Descriptor):
   """
   Version 2 server descriptor, as specified in...
   https://gitweb.torproject.org/torspec.git/blob/HEAD:/dir-spec-v2.txt
@@ -230,7 +230,7 @@ class ServerDescriptorV2(Descriptor):
       ValueError if the contents is malformed and validate is True
     """
     
-    Descriptor.__init__(self, contents)
+    stem.descriptor.descriptor.Descriptor.__init__(self, contents)
     
     self._annotation_lines = annotations
     self._annotation_dict = {}





More information about the tor-commits mailing list