[tor-commits] [stem/master] Separating relay and bridge extra-info descriptors

atagar at torproject.org atagar at torproject.org
Sun Jun 10 21:30:22 UTC 2012


commit 7947d69d4e20ca402e9d1d35fe6e62012d5e61fe
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Jun 10 12:31:14 2012 -0700

    Separating relay and bridge extra-info descriptors
    
    Creating separate classes for relay and bridge extra-info descriptors. At
    present they're identical to their common parent (ExtraInfoDescriptor), adding
    their differences next.
---
 stem/descriptor/__init__.py             |    6 ++++--
 stem/descriptor/extrainfo_descriptor.py |   25 ++++++++++++++++++-------
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 37f9ec7..e4f23e5 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -70,8 +70,10 @@ def parse_file(path, descriptor_file):
     desc = stem.descriptor.server_descriptor.RelayDescriptor(descriptor_file.read())
   elif first_line == "@type bridge-server-descriptor 1.0":
     desc = stem.descriptor.server_descriptor.BridgeDescriptor(descriptor_file.read())
-  elif first_line in ("@type extra-info 1.0", "@type bridge-extra-info 1.0"):
-    desc = stem.descriptor.extrainfo_descriptor.ExtraInfoDescriptor(descriptor_file.read())
+  elif first_line in ("@type bridge-extra-info 1.0"):
+    desc = stem.descriptor.extrainfo_descriptor.RelayExtraInfoDescriptor(descriptor_file.read())
+  elif first_line in ("@type extra-info 1.0"):
+    desc = stem.descriptor.extrainfo_descriptor.BridgeExtraInfoDescriptor(descriptor_file.read())
   
   if desc:
     desc._set_path(path)
diff --git a/stem/descriptor/extrainfo_descriptor.py b/stem/descriptor/extrainfo_descriptor.py
index 9fbdd1d..03c7a37 100644
--- a/stem/descriptor/extrainfo_descriptor.py
+++ b/stem/descriptor/extrainfo_descriptor.py
@@ -42,6 +42,9 @@ Extra-info descriptors are available from a few sources...
   
   parse_file - Iterates over the extra-info descriptors in a file.
   ExtraInfoDescriptor - Tor extra-info descriptor.
+    |  |- RelayExtraInfoDescriptor - Extra-info descriptor for a relay.
+    |  +- BridgeExtraInfoDescriptor - Extra-info descriptor for a bridge.
+    |
     +- get_unrecognized_lines - lines with unrecognized content
 """
 
@@ -270,13 +273,9 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
   
   def __init__(self, raw_contents, validate = True):
     """
-    Extra-info descriptor constructor, created from a relay's extra-info
-    content (as provided by "GETINFO extra-info/digest/*", cached contents, and
-    metrics).
-    
-    By default this validates the descriptor's content as it's parsed. This
-    validation can be disables to either improve performance or be accepting of
-    malformed data.
+    Extra-info descriptor constructor. By default this validates the
+    descriptor's content as it's parsed. This validation can be disables to
+    either improve performance or be accepting of malformed data.
     
     :param str raw_contents: extra-info content provided by the relay
     :param bool validate: checks the validity of the extra-info descriptor if True, skips these checks otherwise
@@ -683,3 +682,15 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
       else:
         self._unrecognized_lines.append(line)
 
+class RelayExtraInfoDescriptor(ExtraInfoDescriptor):
+  """
+  Relay extra-info descriptor, constructed from data such as that provided by
+  "GETINFO extra-info/digest/*", cached descriptors, and metrics
+  (`specification <https://gitweb.torproject.org/torspec.git/blob/HEAD:/dir-spec.txt>`_).
+  """
+
+class BridgeExtraInfoDescriptor(ExtraInfoDescriptor):
+  """
+  Bridge extra-info descriptor (`specification <https://metrics.torproject.org/formats.html#bridgedesc>`_)
+  """
+





More information about the tor-commits mailing list