diff options
author | ianb <devnull@localhost> | 2007-01-16 15:12:13 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2007-01-16 15:12:13 +0000 |
commit | 3e6dab79a2a8a158c97f1f067873bc7abe775188 (patch) | |
tree | f398a7f198985e02d37dfc546dcd24e1e748269b /paste/request.py | |
parent | eec15e69be44b502fc557886d48c3c8c3a846aeb (diff) | |
download | paste-3e6dab79a2a8a158c97f1f067873bc7abe775188.tar.gz |
CONTENT_LENGTH/Content-Length fix in HeaderDict
Diffstat (limited to 'paste/request.py')
-rw-r--r-- | paste/request.py | 37 |
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__ |