summaryrefslogtreecommitdiff
path: root/webob/request.py
diff options
context:
space:
mode:
authorSergey Schetinin <sergey@maluke.com>2011-09-20 13:06:43 +0300
committerSergey Schetinin <sergey@maluke.com>2011-09-20 13:06:43 +0300
commitd484fa2a59bce62a152de9051d0acc5b1b71e63c (patch)
treeececd9455d393fd209e33c12cbdad5ea6626b2ad /webob/request.py
parent1d724661655338ac3dc6cb4d82bbf9b55edec0a4 (diff)
downloadwebob-d484fa2a59bce62a152de9051d0acc5b1b71e63c.tar.gz
change req.cookies implementation to parse on demand
* add webob.cookies.parse_cookie for simple parsing * change _valid_cookie_name implementation to filter out $key and reserved names * do not cache parsed cookies dict in the environ
Diffstat (limited to 'webob/request.py')
-rw-r--r--webob/request.py18
1 files changed, 3 insertions, 15 deletions
diff --git a/webob/request.py b/webob/request.py
index cdbce4f..096cac9 100644
--- a/webob/request.py
+++ b/webob/request.py
@@ -10,7 +10,7 @@ from webob.etag import etag_property, AnyETag, NoETag, IfRange
from webob.descriptors import *
from webob.datetime_utils import *
-from webob.cookies import Cookie
+from webob.cookies import Cookie, parse_cookie
from webob.util import warn_deprecation
__all__ = ['BaseRequest', 'Request']
@@ -614,23 +614,11 @@ class BaseRequest(object):
"""
A dictionary of cookies as found in the request.
"""
- env = self.environ
- source = env.get('HTTP_COOKIE', '')
- if 'webob._parsed_cookies' in env:
- vars, var_source = env['webob._parsed_cookies']
- if var_source == source:
- return vars
-
+ data = self.environ.get('HTTP_COOKIE', '')
encoding = self.charset
errors = self.unicode_errors
d = lambda b: b.decode(encoding, errors)
-
- r = {}
- if source:
- cookies = Cookie(source)
- for name in cookies:
- r[d(name)] = d(cookies[name].value)
- env['webob._parsed_cookies'] = (r, source)
+ r = dict((d(k), d(v)) for k,v in parse_cookie(data))
return r