Changeset 2231:f73352292245

Show
Ignore:
Timestamp:
08/11/08 00:21:24 (3 months ago)
Author:
dunker@…
Branch:
default
Message:

do proper error status returning

Files:
3 modified

Legend:

Unmodified
Added
Removed
  • gozerbot/rest/client.py

    r2230 r2231  
    1919        self.data = None 
    2020        self.error = None 
     21        self.status = None 
     22        self.reason = "" 
    2123 
    2224class RestClient(object): 
     
    4749        try: 
    4850            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 
    5161        except Exception, ex: 
    5262            result.error = str(ex) 
  • gozerbot/rest/server.py

    r2229 r2231  
    109109        request.value = None 
    110110        type = request.command 
    111         result = [] 
    112111        try: 
     112            func = self.handlers[splitted][type] 
     113        except (KeyError, ValueError): 
    113114            try: 
    114                 func = self.handlers[splitted][type] 
     115                func = self.handlers[splitted[:-1]][type] 
     116                request.value = splitted[-1] 
    115117            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) 
    124120        return result 
    125121 
    126122    def makeresult(self, request): 
    127         try: 
    128             result = self.do(request) 
    129         except: 
    130             handle_exception() 
    131             return [] 
     123        result = self.do(request) 
    132124        return result 
    133125 
     
    156148 
    157149    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 
    159156        self.writeheader() 
    160157        self.wfile.write(result) 
     
    162159 
    163160    def handle_request(self): 
    164          if not self.server.entrypoint(self): 
     161        if not self.server.entrypoint(self): 
    165162            return 
    166          self.sendresult() 
     163        self.sendresult() 
    167164 
    168165    do_DELETE = do_PUT = do_GET = do_POST = handle_request 
  • tests/test_rest_server.py

    r2230 r2231  
    4949        self.server.shutdown() 
    5050        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)