diff options
author | Robert Brewer <fumanchu@aminus.org> | 2009-05-31 02:14:52 +0000 |
---|---|---|
committer | Robert Brewer <fumanchu@aminus.org> | 2009-05-31 02:14:52 +0000 |
commit | b26f225806ad0b3d3c7046b697769c4d757f5c29 (patch) | |
tree | e00151f270f9bb2d6cc50e7d5789d2e41a9737a3 /cherrypy/lib/httputil.py | |
parent | 82949dcf84ef2229603a8c7584dc844c0cf15a78 (diff) | |
download | cherrypy-git-b26f225806ad0b3d3c7046b697769c4d757f5c29.tar.gz |
Mostly-working _cpreqbody for Python 2.x.
Diffstat (limited to 'cherrypy/lib/httputil.py')
-rw-r--r-- | cherrypy/lib/httputil.py | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/cherrypy/lib/httputil.py b/cherrypy/lib/httputil.py index c79df9d2..fe9ad3f2 100644 --- a/cherrypy/lib/httputil.py +++ b/cherrypy/lib/httputil.py @@ -112,7 +112,10 @@ class HeaderElement(object): # Split the element into a value and parameters. The 'value' may # be of the form, "token=token", but we don't split that here. atoms = [x.strip() for x in elementstr.split(";") if x.strip()] - initial_value = atoms.pop(0).strip() + if not atoms: + initial_value = '' + else: + initial_value = atoms.pop(0).strip() params = {} for atom in atoms: atom = [x.strip() for x in atom.split("=", 1) if x.strip()] @@ -179,12 +182,11 @@ def header_elements(fieldname, fieldvalue): """Return a HeaderElement list from a comma-separated header str.""" if not fieldvalue: - return None - headername = fieldname.lower() + return [] result = [] for element in fieldvalue.split(","): - if headername.startswith("accept") or headername == 'te': + if fieldname.startswith("Accept") or fieldname == 'TE': hv = AcceptElement.from_str(element) else: hv = HeaderElement.from_str(element) @@ -269,31 +271,6 @@ def parse_query_string(query_string, keep_blank_values=True): pm[key] = val[0] return pm -def params_from_CGI_form(form): - params = {} - for key in form.keys(): - value_list = form[key] - if key is None: - # multipart/* message parts that have no Content-Disposition - # have a .name of None, but Python kwarg keys must be strings. - # See http://www.cherrypy.org/ticket/890. - key = 'parts' - if isinstance(value_list, list): - params[key] = [] - for item in value_list: - if item.filename is not None: - value = item # It's a file upload - else: - value = item.value # It's a regular field - params[key].append(value) - else: - if value_list.filename is not None: - value = value_list # It's a file upload - else: - value = value_list.value # It's a regular field - params[key] = value - return params - class CaseInsensitiveDict(dict): """A case-insensitive dict subclass. @@ -352,12 +329,10 @@ class HeaderMap(CaseInsensitiveDict): """ def elements(self, key): - """Return a list of HeaderElements for the given header (or None).""" + """Return a sorted list of HeaderElements for the given header.""" key = str(key).title() - h = self.get(key) - if h is None: - return [] - return header_elements(key, h) + value = self.get(key) + return header_elements(key, value) def output(self, protocol=(1, 1)): """Transform self into a list of (name, value) tuples.""" |