summaryrefslogtreecommitdiff
path: root/openid/yadis
diff options
context:
space:
mode:
authorJosh Hoyt <josh@janrain.com>2007-06-07 23:48:48 +0000
committerJosh Hoyt <josh@janrain.com>2007-06-07 23:48:48 +0000
commitd7e6e87927dce8747917e4cf02f9a1f3773bc4f9 (patch)
tree5dbcfa876729a9a4b728bc738c9604b663bda402 /openid/yadis
parentdb68a00fecd73435d340f9ddc1ee7279fb53af51 (diff)
downloadopenid-d7e6e87927dce8747917e4cf02f9a1f3773bc4f9.tar.gz
[project @ Added function to openid.yadis.etxrd that parses the Expires date out of an XRD]
Diffstat (limited to 'openid/yadis')
-rw-r--r--openid/yadis/etxrd.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/openid/yadis/etxrd.py b/openid/yadis/etxrd.py
index 419a968..398abd3 100644
--- a/openid/yadis/etxrd.py
+++ b/openid/yadis/etxrd.py
@@ -21,6 +21,9 @@ __all__ = [
import sys
import random
+from datetime import datetime
+from time import strptime
+
from openid.oidutil import importElementTree
ElementTree = importElementTree()
@@ -116,6 +119,7 @@ service_tag = mkXRDTag('Service')
xrd_tag = mkXRDTag('XRD')
type_tag = mkXRDTag('Type')
uri_tag = mkXRDTag('URI')
+expires_tag = mkXRDTag('Expires')
# Other XRD tags
canonicalID_tag = mkXRDTag('CanonicalID')
@@ -141,6 +145,29 @@ def getYadisXRD(xrd_tree):
return xrd
+def getXRDExpiration(xrd_element, default=None):
+ """Return the expiration date of this XRD element, or None if no
+ expiration was specified.
+
+ @type xrd_element: ElementTree node
+
+ @param default: The value to use as the expiration if no
+ expiration was specified in the XRD.
+
+ @rtype: datetime.datetime
+
+ @raises ValueError: If the xrd:Expires element is present, but its
+ contents are not formatted according to the specification.
+ """
+ expires_element = xrd_element.find(expires_tag)
+ if expires_element is None:
+ return default
+ else:
+ expires_string = expires_element.text
+
+ # Will raise ValueError if the string is not the expected format
+ expires_time = strptime(expires_string, "%Y-%m-%dT%H:%M:%SZ")
+ return datetime(*expires_time[0:6])
def getCanonicalID(iname, xrd_tree):
"""Return the CanonicalID from this XRDS document.