################################################## # SPYCE - Python-based HTML Scripting # Copyright (c) 2002 Rimon Barr. # # Refer to spyce.py # CVS: $Id: cookie.py 959 2006-07-28 21:01:10Z ellisj $ ################################################## from spyceModule import spyceModule import Cookie, time, calendar, urllib from UserDict import DictMixin __doc__ = """Cookie module gives users full control over browser cookie functionality. """ class cookie(spyceModule, DictMixin): def start(self): self._cookie = {} cookie = Cookie.SimpleCookie(self._api.getModule('request').env('HTTP_COOKIE')) for c in cookie.keys(): self._cookie[c] = urllib.unquote(cookie[c].value) def get(self, key=None): "Get brower cookie(s)" if key: if key in self._cookie: return self._cookie[key] return None else: return self._cookie def set(self, key, value, expire=None, domain=None, path=None, secure=0): "Set browser cookie" if value==None: # delete (set to expire one week ago) return self.set(key, '', -60*60*24*7, domain, path, secure) text = '%s=%s' % (key, urllib.quote(value)) if expire != None: text = text + ';EXPIRES=%s' % time.strftime( '%a, %d-%b-%y %H:%M:%S GMT', time.gmtime(time.time()+expire)) if domain: text = text + ';DOMAIN=%s' % domain if path: text = text + ';PATH=%s' % path if secure: text = text + ';SECURE' self._api.getModule('response').addHeader('Set-Cookie', text) def delete(self, key, domain=None, path=None, secure=0): "Delete browser cookie" self.set(key, None, domain=domain, path=path, secure=secure) # for DictMixin def keys(self): return self._cookie.keys() def __getitem__(self, key): return self.get(key) def __contains__(self, key): return key in self._cookie def __delitem__(self, key): return self.delete(self, key)