diff options
| author | Sergey Schetinin <sergey@maluke.com> | 2011-09-20 13:06:43 +0300 |
|---|---|---|
| committer | Sergey Schetinin <sergey@maluke.com> | 2011-09-20 13:06:43 +0300 |
| commit | d484fa2a59bce62a152de9051d0acc5b1b71e63c (patch) | |
| tree | ececd9455d393fd209e33c12cbdad5ea6626b2ad /webob/request.py | |
| parent | 1d724661655338ac3dc6cb4d82bbf9b55edec0a4 (diff) | |
| download | webob-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.py | 18 |
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 |
