Changeset 775
- Timestamp:
- 11/01/05 15:04:36
- Files:
-
- trunk/cherrypy/_cphttptools.py (modified) (3 diffs)
- trunk/cherrypy/lib/cptools.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cphttptools.py
r773 r775 69 69 70 70 71 class KeyTitlingDict(dict):72 73 """A dict subclass which changes each key to str(key).title()74 75 This allows headers to be case-insensitive and avoid duplicates.76 """77 78 def __getitem__(self, key):79 return dict.__getitem__(self, str(key).title())80 81 def __setitem__(self, key, value):82 dict.__setitem__(self, str(key).title(), value)83 84 def __delitem__(self, key):85 dict.__delitem__(self, str(key).title())86 87 def __contains__(self, item):88 return dict.__contains__(self, str(item).title())89 90 def get(self, key, default=None):91 return dict.get(self, str(key).title(), default)92 93 def has_key(self, key):94 return dict.has_key(self, str(key).title())95 96 def update(self, E):97 for k in E.keys():98 self[str(k).title()] = E[k]99 100 def fromkeys(cls, seq, value=None):101 newdict = cls()102 for k in seq:103 newdict[str(k).title()] = value104 return newdict105 fromkeys = classmethod(fromkeys)106 107 def setdefault(self, key, x=None):108 key = str(key).title()109 try:110 return self[key]111 except KeyError:112 self[key] = x113 return x114 115 def pop(self, key, default):116 return dict.pop(self, str(key).title(), default)117 118 119 71 class Request(object): 120 72 """An HTTP request.""" … … 160 112 try: 161 113 self.headers = headers 162 self.headerMap = KeyTitlingDict()114 self.headerMap = cptools.HeaderMap() 163 115 self.simpleCookie = Cookie.SimpleCookie() 164 116 self.rfile = rfile … … 473 425 self.body = None 474 426 475 self.headerMap = KeyTitlingDict()427 self.headerMap = cptools.HeaderMap() 476 428 self.headerMap.update({ 477 429 "Content-Type": "text/html", trunk/cherrypy/lib/cptools.py
r774 r775 487 487 488 488 489 class HeaderMap(dict): 490 """A dict subclass for HTTP request and response headers. 491 492 Each key is changed on entry to str(key).title(). This allows headers 493 to be case-insensitive and avoid duplicates. 494 """ 495 496 def __getitem__(self, key): 497 return dict.__getitem__(self, str(key).title()) 498 499 def __setitem__(self, key, value): 500 dict.__setitem__(self, str(key).title(), value) 501 502 def __delitem__(self, key): 503 dict.__delitem__(self, str(key).title()) 504 505 def __contains__(self, item): 506 return dict.__contains__(self, str(item).title()) 507 508 def get(self, key, default=None): 509 return dict.get(self, str(key).title(), default) 510 511 def has_key(self, key): 512 return dict.has_key(self, str(key).title()) 513 514 def update(self, E): 515 for k in E.keys(): 516 self[str(k).title()] = E[k] 517 518 def fromkeys(cls, seq, value=None): 519 newdict = cls() 520 for k in seq: 521 newdict[str(k).title()] = value 522 return newdict 523 fromkeys = classmethod(fromkeys) 524 525 def setdefault(self, key, x=None): 526 key = str(key).title() 527 try: 528 return self[key] 529 except KeyError: 530 self[key] = x 531 return x 532 533 def pop(self, key, default): 534 return dict.pop(self, str(key).title(), default)

