##################################################
# 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)
|