-import io
+import StringIO
__all__ = ["request"]
self.bk = back
self.limit = limit
self.rb = 0
- self.buf = bytearray()
+ self.buf = ""
def close(self):
pass
ret = self.bk.read(ra - len(self.buf))
if ret == "":
raise IOError("Unexpected EOF")
- self.buf.extend(ret)
+ self.buf += ret
self.rb += len(ret)
- ret = str(self.buf[:ra])
+ ret = self.buf[:ra]
self.buf = self.buf[ra:]
return ret
while True:
p = self.buf.find('\n', off)
if p >= 0:
- ret = str(self.buf[:p + 1])
+ ret = self.buf[:p + 1]
self.buf = self.buf[p + 1:]
return ret
off = len(self.buf)
if size >= 0 and len(self.buf) >= size:
- ret = str(self.buf[:size])
+ ret = self.buf[:size]
self.buf = self.buf[size:]
return ret
if self.rb == self.limit:
- ret = str(self.buf)
- self.buf = bytearray()
+ ret = self.buf
+ self.buf = ""
return ret
ra = self.limit - self.rb
if size >= 0:
ret = self.bk.read(ra)
if ret == "":
raise IOError("Unpexpected EOF")
- self.buf.extend(ret)
+ self.buf += ret
self.rb += len(ret)
def readlines(self, hint=None):
self.servername = env["SERVER_NAME"]
self.https = "HTTPS" in env
self.ihead = headdict()
- self.input = None
if "CONTENT_TYPE" in env:
self.ihead["Content-Type"] = env["CONTENT_TYPE"]
- if "CONTENT_LENGTH" in env:
- clen = self.ihead["Content-Length"] = env["CONTENT_LENGTH"]
- if clen.isdigit():
- self.input = limitreader(env["wsgi.input"], int(clen))
- if self.input is None:
- self.input = io.BytesIO("")
+ if "CONTENT_LENGTH" in env:
+ clen = self.ihead["Content-Length"] = env["CONTENT_LENGTH"]
+ if clen.isdigit():
+ self.input = limitreader(env["wsgi.input"], int(clen))
+ else:
+ # XXX: What to do?
+ self.input = StringIO.StringIO("")
+ else:
+ # Assume input is chunked and read until ordinary EOF.
+ self.input = env["wsgi.input"]
+ else:
+ self.input = None
self.ohead = headdict()
for k, v in env.items():
if k[:5] == "HTTP_":