|
- # -*- coding: utf-8 -*-
-
- import base64
- from Cookie import BaseCookie
- from datetime import datetime, timedelta
- from os import path
-
- class _CookieManager(BaseCookie):
- def __init__(self, environ):
- self._path = path.split(environ["PATH_INFO"])[0]
- try:
- super(_CookieManager, self).__init__(environ["HTTP_COOKIE"])
- except AttributeError:
- super(_CookieManager, self).__init__()
-
- def value_decode(self, value):
- try:
- return base64.b64decode(value).decode("utf8")
- except (TypeError, UnicodeDecodeError):
- return u"False"
-
- def value_encode(self, value):
- return base64.b64encode(value.encode("utf8"))
-
- @property
- def path(self):
- return self._path
-
-
- def parse_cookies(context, environ):
- return _CookieManager(environ)
-
- def set_cookie(headers, cookies, key, value, days=0):
- cookies[key] = value
- if days:
- expires = datetime.utcnow() + timedelta(days=days)
- cookies[key]["expires"] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
- cookies[key]["path"] = cookies.path
- headers.append(("Set-Cookie", cookies[key].OutputString()))
-
- def delete_cookie(headers, cookies, key):
- set_cookie(headers, cookies, key, "", days=-1)
|