[tor-commits] [stem/master] Handling the server descriptor's published line

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


commit 0ae8839cd91e658a36e7a4c9e5eeec7a75146651
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Mar 17 19:24:45 2012 -0700

    Handling the server descriptor's published line
    
    Ugggg, I'm always filled with hate when I need to touch the datetime module.
    I'm not entirely sure if I'm supposed to be associating timezone information
    with this datetime object or not - and if I am how to get the f*ing thing to
    realize that it's GMT.
---
 stem/descriptor/server_descriptor.py |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index 8c1b845..d0f343c 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -9,11 +9,12 @@ etc). This information is provided from a few sources...
 """
 
 import re
+import datetime
 
 import stem.version
-from stem.descriptor.descriptor import Descriptor
 import stem.util.connection
 import stem.util.tor_tools
+from stem.descriptor.descriptor import Descriptor
 
 ENTRY_START = "router"
 ENTRY_END   = "router-signature"
@@ -68,7 +69,7 @@ class ServerDescriptorV2(Descriptor):
     observed_bandwidth (int) - estimated capacity of the relay based on usage in bytes/s (*)
     platform (str)           - operating system and tor version
     tor_version (stem.version.Version) - version of tor
-    
+    published (datetime.datetime) - time in GMT when the descriptor was generated (*)
     
     * required fields, others are left as None if undefined
   """
@@ -76,6 +77,7 @@ class ServerDescriptorV2(Descriptor):
   nickname = address = or_port = socks_port = dir_port = None
   average_bandwidth = burst_bandwidth = observed_bandwidth = None
   platform = tor_version = None
+  published = None
   
   def __init__(self, contents):
     Descriptor.__init__(self, contents)
@@ -174,4 +176,11 @@ class ServerDescriptorV2(Descriptor):
           try:
             tor_version = stem.version.Version(platform_comp[1])
           except ValueError: pass
+      elif keyword == "published":
+        # "published" YYYY-MM-DD HH:MM:SS
+        
+        try:
+          self.published = datetime.datetime.strptime(values[0], "%Y-%m-%d %H:%M:%S")
+        except ValueError:
+          raise TypeError("Published line's time wasn't parseable: %s" % values[0])
 





More information about the tor-commits mailing list