Dolda2000 GitWeb
/
wrw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow None in parurl values to omit keys.
[wrw.git]
/
wrw
/
form.py
diff --git
a/wrw/form.py
b/wrw/form.py
index
53fc82d
..
d39d4dd
100644
(file)
--- a/
wrw/form.py
+++ b/
wrw/form.py
@@
-7,13
+7,16
@@
def formparse(req):
buf = {}
buf.update(urllib.parse.parse_qsl(req.query))
if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded":
buf = {}
buf.update(urllib.parse.parse_qsl(req.query))
if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded":
- rbody = req.input.read(2 ** 20)
+ try:
+ rbody = req.input.read(2 ** 20)
+ except IOError as exc:
+ return exc
if len(rbody) >= 2 ** 20:
if len(rbody) >= 2 ** 20:
- r
aise
ValueError("x-www-form-urlencoded data is absurdly long")
+ r
eturn
ValueError("x-www-form-urlencoded data is absurdly long")
buf.update(urllib.parse.parse_qsl(rbody.decode("latin1")))
return buf
buf.update(urllib.parse.parse_qsl(rbody.decode("latin1")))
return buf
-class badmultipart(
Exception
):
+class badmultipart(
IOError
):
pass
class formpart(object):
pass
class formpart(object):
@@
-50,7
+53,7
@@
class formpart(object):
break
while len(self.form.buf) <= len(lboundary):
ret = req.input.read(8192)
break
while len(self.form.buf) <= len(lboundary):
ret = req.input.read(8192)
- if ret == "":
+ if ret ==
b
"":
raise badmultipart("Missing last multipart boundary")
self.form.buf += ret
raise badmultipart("Missing last multipart boundary")
self.form.buf += ret
@@
-61,7
+64,7
@@
class formpart(object):
self.buf = self.buf[limit:]
else:
ret = self.buf
self.buf = self.buf[limit:]
else:
ret = self.buf
- self.buf = ""
+ self.buf =
b
""
return ret
def readline(self, limit=-1):
return ret
def readline(self, limit=-1):
@@
-71,7
+74,7
@@
class formpart(object):
if p < 0:
if self.eof:
ret = self.buf
if p < 0:
if self.eof:
ret = self.buf
- self.buf = ""
+ self.buf =
b
""
return ret
last = len(self.buf)
self.fillbuf(last + 128)
return ret
last = len(self.buf)
self.fillbuf(last + 128)
@@
-81,7
+84,9
@@
class formpart(object):
return ret
def close(self):
return ret
def close(self):
- self.fillbuf(-1)
+ while True:
+ if self.read(8192) == b"":
+ break
def __enter__(self):
return self
def __enter__(self):
return self
@@
-159,5
+164,10
@@
class multipart(object):
self.lastpart.parsehead(self.headcs)
return self.lastpart
self.lastpart.parsehead(self.headcs)
return self.lastpart
-def formdata(req):
- return req.item(formparse)
+def formdata(req, onerror=Exception):
+ data = req.item(formparse)
+ if isinstance(data, Exception):
+ if onerror is Exception:
+ raise data
+ return onerror
+ return data