[stem/master] Using server descriptor when parsing

commit 3b657b57b4cb4ce5304145a7a55051e758cf9cbd Author: Damian Johnson <atagar@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 = {}
participants (1)
-
atagar@torproject.org