summaryrefslogtreecommitdiff
path: root/paste/request.py
diff options
context:
space:
mode:
authorianb <devnull@localhost>2007-01-16 15:12:13 +0000
committerianb <devnull@localhost>2007-01-16 15:12:13 +0000
commit3e6dab79a2a8a158c97f1f067873bc7abe775188 (patch)
treef398a7f198985e02d37dfc546dcd24e1e748269b /paste/request.py
parenteec15e69be44b502fc557886d48c3c8c3a846aeb (diff)
downloadpaste-3e6dab79a2a8a158c97f1f067873bc7abe775188.tar.gz
CONTENT_LENGTH/Content-Length fix in HeaderDict
Diffstat (limited to 'paste/request.py')
-rw-r--r--paste/request.py37
1 files changed, 25 insertions, 12 deletions
diff --git a/paste/request.py b/paste/request.py
index 6968c5b..0b49e54 100644
--- a/paste/request.py
+++ b/paste/request.py
@@ -332,33 +332,46 @@ class EnvironHeaders(DictMixin):
def __init__(self, environ):
self.environ = environ
+
+ def _trans_name(self, name):
+ key = 'HTTP_'+name.replace('-', '_').upper()
+ if key == 'HTTP_CONTENT_LENGTH':
+ key = 'CONTENT_LENGTH'
+ elif key == 'HTTP_CONTENT_TYPE':
+ key = 'CONTENT_TYPE'
+ return key
+
+ def _trans_key(self, key):
+ if key == 'CONTENT_TYPE':
+ return 'Content-Type'
+ elif key == 'CONTENT_LENGTH':
+ return 'Content-Length'
+ elif key.startswith('HTTP_'):
+ return key[5:].replace('_', '-').title()
+ else:
+ return None
def __getitem__(self, item):
- item = item.replace('-', '_').upper()
- return self.environ['HTTP_'+item]
+ return self.environ[self._trans_name(item)]
def __setitem__(self, item, value):
# @@: Should this dictionary be writable at all?
- item = item.replace('-', '_').upper()
- self.environ['HTTP_'+item] = value
+ self.environ[self._trans_name(item)] = value
def __delitem__(self, item):
- item = item.replace('-', '_').upper()
- del self.environ['HTTP_'+item]
+ del self.environ[self._trans_name(item)]
def __iter__(self):
for key in self.environ:
- if not key.startswith('HTTP_'):
- continue
- key = key[5:].replace('_', '-').title()
- yield key
+ name = self._trans_key(key)
+ if name is not None:
+ yield name
def keys(self):
return list(self)
def __contains__(self, item):
- item = item.replace('-', '_').upper()
- return 'HTTP_'+item in self.environ
+ return self._trans_name(item) in self.environ
def _cgi_FieldStorage__repr__patch(self):
""" monkey patch for FieldStorage.__repr__