1
from openid import cryptutil
4
class ServerAssocs(object):
9
self.assocs[assoc.handle] = assoc
11
def get(self, handle):
12
return self.assocs.get(handle)
14
def remove(self, handle):
16
del self.assocs[handle]
23
"""Returns association with the oldest issued date.
25
or None if there are no associations.
28
for assoc in self.assocs.values():
29
if best is None or best.issued < assoc.issued:
33
class MemoryStore(object):
34
"""In-process memory store.
36
Use for single long-running processes. No persistence supplied.
41
self.server_assocs = {}
43
self.auth_key = cryptutil.randomString(self.AUTH_KEY_LEN)
45
def _getServerAssocs(self, server_url):
47
return self.server_assocs[server_url]
49
assocs = self.server_assocs[server_url] = ServerAssocs()
55
def storeAssociation(self, server_url, assoc):
56
assocs = self._getServerAssocs(server_url)
57
assocs.set(copy.deepcopy(assoc))
59
def getAssociation(self, server_url, handle=None):
60
assocs = self._getServerAssocs(server_url)
64
return assocs.get(handle)
66
def removeAssociation(self, server_url, handle):
67
assocs = self._getServerAssocs(server_url)
68
return assocs.remove(handle)
70
def useNonce(self, nonce):
72
del self.nonces[nonce]
78
def storeNonce(self, nonce):
79
self.nonces[nonce] = None
84
def __eq__(self, other):
85
return ((self.server_assocs == other.server_assocs) and
86
(self.nonces == other.nonces) and
87
(self.auth_key == other.auth_key))
89
def __ne__(self, other):
90
return not (self == other)