def _handle_response(self, mres, resp): result = self headers = result.headers if resp.headers: ix = 0 while True: pp = resp.headers[ix] if pp == ffi.NULL: break key = from_cstring(resp.headers[ix]) value = from_cstring(resp.headers[ix+1]) headers[key] = value ix += 2 result.rc = resp.rc result.htcode = resp.htstatus if resp.rc: mres._add_bad_rc(resp.rc) elif not self.success and not mres._quiet: try: raise PyCBC.exc_http(self.value, response=self) except PyCBC.default_exception: mres._add_err(sys.exc_info()) if resp.nbody: buf = bytes(ffi.buffer(ffi.cast('const char*', resp.body), resp.nbody)) tc = self._parent._tc try: result.http_data = tc.decode_value(buf, self._format) except: if not self._quiet: mres._add_err(sys.exc_info()) result.http_data = buf
def _handle_done(self, resp, mres): self.done = True self._c_handle = None if resp.rc: if resp.rc == C.LCB_HTTP_ERROR: try: raise PyCBC.exc_http(self.value) except: mres._add_err(sys.exc_info()) else: mres._add_bad_rc(resp.rc, self) if resp.nvalue: self.value = buf2str(resp.value, resp.nvalue) try: self.value = PyCBC.json_decode(self.value) except: pass if resp.htresp: if not self.value and resp.htresp.nbody: self.value = buf2str(resp.htresp.body, resp.htresp.nbody) self.http_status = resp.htresp.htstatus if self._parent._is_async: try: mres._maybe_throw() self._invoke_async(mres, is_final=True) except: mres.errback(mres, *sys.exc_info()) finally: del self._parent
def _handle_done(self, resp, mres): self.done = True self._c_handle = None if resp.rc: if resp.rc == C.LCB_HTTP_ERROR: try: raise PyCBC.exc_http(self.value) except: mres._add_err(sys.exc_info()) else: mres._add_bad_rc(resp.rc, self) if resp.nvalue: self.value = buf2str(resp.value, resp.nvalue) try: self.value = PyCBC.json_decode(self.value) except: pass if resp.htresp: if not self.value and resp.htresp.nbody: self.value = buf2str(resp.htresp.body, resp.htresp.nbody) self.http_status = resp.htresp.htstatus if self._parent._is_async: try: mres._maybe_throw() self._invoke_async(mres, is_final=True) except: mres.errback(mres, *sys.exc_info()) finally: del self._parent
def _handle_response(self, mres, resp): result = self headers = result.headers if resp.headers: ix = 0 while True: pp = resp.headers[ix] if pp == ffi.NULL: break key = from_cstring(resp.headers[ix]) value = from_cstring(resp.headers[ix + 1]) headers[key] = value ix += 2 result.rc = resp.rc result.htcode = resp.htstatus if resp.rc: mres._add_bad_rc(resp.rc) elif not self.success and not mres._quiet: try: raise PyCBC.exc_http(self.value, response=self) except PyCBC.default_exception: mres._add_err(sys.exc_info()) if resp.nbody: buf = bytes( ffi.buffer(ffi.cast('const char*', resp.body), resp.nbody)) tc = self._parent._tc try: result.http_data = tc.decode_value(buf, self._format) except: if not self._quiet: mres._add_err(sys.exc_info()) result.http_data = buf