def _process(self, curl, errno=None, reason=None, _pycurl=pycurl): info, curl.info = curl.info, None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info['buffer'] if errno: code = 599 error = HttpError(code, reason) error.errno = errno effective_url = None buffer.close() buffer = None else: error = None code = curl.getinfo(_pycurl.HTTP_CODE) effective_url = curl.getinfo(_pycurl.EFFECTIVE_URL) buffer.seek(0) # try: request = info['request'] request.on_ready( self.Response( request=request, code=code, headers=info['headers'], buffer=buffer, effective_url=effective_url, error=error, ))
def _process(self, curl, errno=None, reason=None, _pycurl=pycurl): info, curl.info = curl.info, None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info['buffer'] if errno: code = 599 error = HttpError(code, reason) error.errno = errno effective_url = None buffer.close() buffer = None else: error = None code = curl.getinfo(_pycurl.HTTP_CODE) effective_url = curl.getinfo(_pycurl.EFFECTIVE_URL) buffer.seek(0) try: request = info['request'] request.on_ready(self.Response( request=request, code=code, headers=info['headers'], buffer=buffer, effective_url=effective_url, error=error, )) except Exception as exc: raise self.hub.on_callback_error(request.on_ready, exc)
def test_with_error(self): r = Mock(name='response') r.error = HttpError(404, 'NotFound') x = AsyncHTTPResponse(r) assert x.reason == 'NotFound' r.error = None assert not x.reason
def test_with_error(self): r = Mock(name='response') r.error = HttpError(404, 'NotFound') x = AsyncHTTPResponse(r) self.assertEqual(x.reason, 'NotFound') r.error = None self.assertFalse(x.reason)
def mock_response_get(*args, **kwargs): class MockResponse: def __init__(self, json_data, status_code, error=None): self.json_data = json_data self.status_code = status_code self.error = error def json(self): return self.json_data def raise_for_status(self): if self.error: raise self.error # Test silo URL if args[0] == 'http://www.silo.com/': return MockResponse({'key': 'value'}, 200) # Test logging URL elif args[0] == 'http://www.logging.com/health': return MockResponse( { 'plugins': [{ 'type': 'elasticsearch', 'buffer_queue_length': 0, 'buffer_total_queued_size': 0 }] }, 200) elif args[0] == 'http://localhost': return MockResponse( { 'plugins': [{ 'type': 'elasticsearch', 'buffer_queue_length': 20, 'buffer_total_queued_size': 100000000000 }] }, 200) elif args[0] == 'https://scale.io/social-auth/login/geoaxis/?=': return MockResponse({}, 200) elif args[0] == 'https://unauthorized/social-auth/login/geoaxis/?=': return MockResponse({}, 401, HttpError('Unauthorized')) elif args[0] == 'https://host-offline/social-auth/login/geoaxis/?=': return MockResponse({}, 503, HttpError('Service Unavailable')) return MockResponse({}, 404, HttpError('File not found'))
def __init__(self, request, code, headers=None, buffer=None, effective_url=None, error=None, status=None): self.request = request self.code = code self.headers = headers if headers is not None else Headers() self.buffer = buffer self.effective_url = effective_url or request.url self._body = None self.status = status or responses.get(self.code, 'Unknown') self.error = error if self.error is None and (self.code < 200 or self.code > 299): self.error = HttpError(self.code, self.status, self)
def test_str(self) -> None: assert str(HttpError(200, 'msg', Mock(name='response')))