def _execute_request(self, request): """Execute an HTTPRequest and construct a resource from the payload""" logging.debug('Making HTTP %s request to %s' % (request.method, request.url)) rsp = self.server.make_request(request) info = rsp.info() mime_type = info['Content-Type'] item_content_type = info.get('Item-Content-Type', None) payload = rsp.read() payload = decode_response(payload, mime_type) return create_resource(self, payload, request.url, mime_type=mime_type, item_mime_type=item_content_type)
def __call__(self, *args, **kwargs): """Executed when a resource's method is called.""" call_result = self._method(*args, **kwargs) if not isinstance(call_result, HttpRequest): return call_result rsp = self._transport.server.make_request(call_result) info = rsp.info() mime_type = info['Content-Type'] item_content_type = info.get('Item-Content-Type', None) payload = rsp.read() payload = decode_response(payload, mime_type) resource = create_resource(payload, call_result.url, mime_type=mime_type, item_mime_type=item_content_type) return self._transport.wrap(resource)
def _execute_request(self, request): """Execute an HTTPRequest and construct a resource from the payload""" logging.debug('Making HTTP %s request to %s', request.method, request.url) rsp = self.server.make_request(request) info = rsp.info() mime_type = info['Content-Type'] item_content_type = info.get('Item-Content-Type', None) if request.method == 'DELETE': # DELETE calls don't return any data. Everything else should. return None else: payload = rsp.read() payload = decode_response(payload, mime_type) return create_resource(self, payload, request.url, mime_type=mime_type, item_mime_type=item_content_type)