summaryrefslogtreecommitdiff
path: root/cherrypy/lib/cptools.py
diff options
context:
space:
mode:
authorRobert Brewer <fumanchu@aminus.org>2005-11-01 21:04:36 +0000
committerRobert Brewer <fumanchu@aminus.org>2005-11-01 21:04:36 +0000
commit82f15e68964514fc32481f7be90fdd91f41c96e7 (patch)
treeac7a68f2b459aee9803802be8637d94741a9eed5 /cherrypy/lib/cptools.py
parentc1311c2ea596210529e43148177beea1463809a9 (diff)
downloadcherrypy-git-82f15e68964514fc32481f7be90fdd91f41c96e7.tar.gz
Moved _cphttptools.KeyTitlingDict to lib.cptools.HeaderMap.
Diffstat (limited to 'cherrypy/lib/cptools.py')
-rw-r--r--cherrypy/lib/cptools.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/cherrypy/lib/cptools.py b/cherrypy/lib/cptools.py
index f437f3ba..fa3f219b 100644
--- a/cherrypy/lib/cptools.py
+++ b/cherrypy/lib/cptools.py
@@ -486,3 +486,49 @@ def paramsFromCGIForm(form):
return paramMap
+class HeaderMap(dict):
+ """A dict subclass for HTTP request and response headers.
+
+ Each key is changed on entry to str(key).title(). This allows headers
+ to be case-insensitive and avoid duplicates.
+ """
+
+ def __getitem__(self, key):
+ return dict.__getitem__(self, str(key).title())
+
+ def __setitem__(self, key, value):
+ dict.__setitem__(self, str(key).title(), value)
+
+ def __delitem__(self, key):
+ dict.__delitem__(self, str(key).title())
+
+ def __contains__(self, item):
+ return dict.__contains__(self, str(item).title())
+
+ def get(self, key, default=None):
+ return dict.get(self, str(key).title(), default)
+
+ def has_key(self, key):
+ return dict.has_key(self, str(key).title())
+
+ def update(self, E):
+ for k in E.keys():
+ self[str(k).title()] = E[k]
+
+ def fromkeys(cls, seq, value=None):
+ newdict = cls()
+ for k in seq:
+ newdict[str(k).title()] = value
+ return newdict
+ fromkeys = classmethod(fromkeys)
+
+ def setdefault(self, key, x=None):
+ key = str(key).title()
+ try:
+ return self[key]
+ except KeyError:
+ self[key] = x
+ return x
+
+ def pop(self, key, default):
+ return dict.pop(self, str(key).title(), default)