Changeset 2231:f73352292245
- Timestamp:
- 08/11/08 00:21:24 (3 months ago)
- Author:
- dunker@…
- Branch:
- default
- Message:
-
do proper error status returning
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r2230
|
r2231
|
|
| 19 | 19 | self.data = None |
| 20 | 20 | self.error = None |
| | 21 | self.status = None |
| | 22 | self.reason = "" |
| 21 | 23 | |
| 22 | 24 | class RestClient(object): |
| … |
… |
|
| 47 | 49 | try: |
| 48 | 50 | res = func(url, {}, kwargs, self.keyfile, self.certfile, self.port) |
| 49 | | result.data = loads(res.read()) |
| 50 | | result.error = None |
| | 51 | result.status = res.status |
| | 52 | result.reason = res.reason |
| | 53 | if result.status >= 400: |
| | 54 | result.error = result.status |
| | 55 | else: |
| | 56 | result.error = None |
| | 57 | if result.status == 200: |
| | 58 | result.data = loads(res.read()) |
| | 59 | else: |
| | 60 | result.data = None |
| 51 | 61 | except Exception, ex: |
| 52 | 62 | result.error = str(ex) |
-
|
r2229
|
r2231
|
|
| 109 | 109 | request.value = None |
| 110 | 110 | type = request.command |
| 111 | | result = [] |
| 112 | 111 | try: |
| | 112 | func = self.handlers[splitted][type] |
| | 113 | except (KeyError, ValueError): |
| 113 | 114 | try: |
| 114 | | func = self.handlers[splitted][type] |
| | 115 | func = self.handlers[splitted[:-1]][type] |
| | 116 | request.value = splitted[-1] |
| 115 | 117 | except (KeyError, ValueError): |
| 116 | | try: |
| 117 | | func = self.handlers[splitted[:-1]][type] |
| 118 | | request.value = splitted[-1] |
| 119 | | except (KeyError, ValueError): |
| 120 | | return result |
| 121 | | result = func(request) |
| 122 | | except Exception, ex: |
| 123 | | handle_exception() |
| | 118 | return result |
| | 119 | result = func(request) |
| 124 | 120 | return result |
| 125 | 121 | |
| 126 | 122 | def makeresult(self, request): |
| 127 | | try: |
| 128 | | result = self.do(request) |
| 129 | | except: |
| 130 | | handle_exception() |
| 131 | | return [] |
| | 123 | result = self.do(request) |
| 132 | 124 | return result |
| 133 | 125 | |
| … |
… |
|
| 156 | 148 | |
| 157 | 149 | def sendresult(self): |
| 158 | | result = self.server.makeresult(self) |
| | 150 | try: |
| | 151 | result = self.server.makeresult(self) |
| | 152 | except Exception, ex: |
| | 153 | handle_exception() |
| | 154 | self.send_error(501, 'internal server error') |
| | 155 | return |
| 159 | 156 | self.writeheader() |
| 160 | 157 | self.wfile.write(result) |
| … |
… |
|
| 162 | 159 | |
| 163 | 160 | def handle_request(self): |
| 164 | | if not self.server.entrypoint(self): |
| | 161 | if not self.server.entrypoint(self): |
| 165 | 162 | return |
| 166 | | self.sendresult() |
| | 163 | self.sendresult() |
| 167 | 164 | |
| 168 | 165 | do_DELETE = do_PUT = do_GET = do_POST = handle_request |
-
|
r2230
|
r2231
|
|
| 49 | 49 | self.server.shutdown() |
| 50 | 50 | self.assert_(result.data['test'] == 'mekker') |
| | 51 | |
| | 52 | def test_error(self): |
| | 53 | def cb(request): |
| | 54 | mekker |
| | 55 | return dumps(data) |
| | 56 | self.server.start() |
| | 57 | self.server.addhandler('/test/', 'POST', cb) |
| | 58 | result = RestClient('http://localhost:10101/test/').post(test='mekker') |
| | 59 | self.server.shutdown() |
| | 60 | |
| | 61 | print result.data |
| | 62 | print result.error, result.status, result.reason |
| | 63 | self.assert_(result.error == 501) |