diff options
author | Josh Hoyt <josh@janrain.com> | 2007-06-07 23:48:48 +0000 |
---|---|---|
committer | Josh Hoyt <josh@janrain.com> | 2007-06-07 23:48:48 +0000 |
commit | d7e6e87927dce8747917e4cf02f9a1f3773bc4f9 (patch) | |
tree | 5dbcfa876729a9a4b728bc738c9604b663bda402 /openid/yadis | |
parent | db68a00fecd73435d340f9ddc1ee7279fb53af51 (diff) | |
download | openid-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.py | 27 |
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. |