75 message = _statusmessage(code) |
75 message = _statusmessage(code) |
76 Exception.__init__(self, code, message) |
76 Exception.__init__(self, code, message) |
77 self.code = code |
77 self.code = code |
78 self.message = message |
78 self.message = message |
79 self.headers = headers |
79 self.headers = headers |
|
80 |
|
81 class continuereader(object): |
|
82 def __init__(self, f, write): |
|
83 self.f = f |
|
84 self._write = write |
|
85 self.continued = False |
|
86 |
|
87 def read(self, amt=-1): |
|
88 if not self.continued: |
|
89 self.continued = True |
|
90 self._write('HTTP/1.1 100 Continue\r\n\r\n') |
|
91 return self.f.read(amt) |
|
92 |
|
93 def __getattr__(self, attr): |
|
94 if attr in ('close', 'readline', 'readlines', '__iter__'): |
|
95 return getattr(self.f, attr) |
|
96 raise AttributeError() |
80 |
97 |
81 def _statusmessage(code): |
98 def _statusmessage(code): |
82 from BaseHTTPServer import BaseHTTPRequestHandler |
99 from BaseHTTPServer import BaseHTTPRequestHandler |
83 responses = BaseHTTPRequestHandler.responses |
100 responses = BaseHTTPRequestHandler.responses |
84 return responses.get(code, ('Error', 'Unknown error'))[0] |
101 return responses.get(code, ('Error', 'Unknown error'))[0] |