Python pycurl.HTTP_CODE Examples
The following are 30
code examples of pycurl.HTTP_CODE().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pycurl
, or try the search function
.
Example #1
Source File: test_fetch.py From landscape-client with GNU General Public License v2.0 | 6 votes |
def __init__(self, url_results): self.curls = {} for url in url_results: result = url_results[url] if not isinstance(result, tuple): body = result http_code = 200 else: body = result[0] http_code = result[1] self.curls[url] = CurlStub( result=body, infos={pycurl.HTTP_CODE: http_code}) # Use thread local storage to keep the current CurlStub since # CurlManyStub is passed to multiple threads, but the state needs to be # local. self._local = local() self._local.current = None
Example #2
Source File: psurl.py From pscheduler with Apache License 2.0 | 6 votes |
def __call__(self, json, throw): """Fetch the URL""" try: self.curl.perform() status = self.curl.getinfo(pycurl.HTTP_CODE) text = self.buf.getvalue() except pycurl.error as ex: (code, message) = ex status = 400 text = message finally: self.curl.close() self.buf.close() #If status is outside the HTTP 2XX success range if status < 200 or status > 299: if throw: raise URLException(text.strip()) else: return (status, text) if json: return (status, json_load(text)) else: return (status, text)
Example #3
Source File: httpclient.py From honeything with GNU General Public License v3.0 | 6 votes |
def fetch(self, request, **kwargs): """Executes an HTTPRequest, returning an HTTPResponse. If an error occurs during the fetch, we raise an HTTPError. """ if not isinstance(request, HTTPRequest): request = HTTPRequest(url=request, **kwargs) buffer = cStringIO.StringIO() headers = httputil.HTTPHeaders() try: _curl_setup_request(self._curl, request, buffer, headers) self._curl.perform() code = self._curl.getinfo(pycurl.HTTP_CODE) effective_url = self._curl.getinfo(pycurl.EFFECTIVE_URL) buffer.seek(0) response = HTTPResponse( request=request, code=code, headers=headers, buffer=buffer, effective_url=effective_url) if code < 200 or code >= 300: raise HTTPError(code, response=response) return response except pycurl.error, e: buffer.close() raise CurlError(*e)
Example #4
Source File: curl.py From pulsar with Apache License 2.0 | 6 votes |
def get_file(url, path): if path and os.path.exists(path): buf = _open_output(path, 'ab') size = os.path.getsize(path) success_codes = (200, 206) else: buf = _open_output(path) size = 0 success_codes = (200,) try: c = _new_curl_object_for_url(url) c.setopt(c.WRITEFUNCTION, buf.write) if size > 0: log.info('transfer of %s will resume at %s bytes', url, size) c.setopt(c.RESUME_FROM, size) c.perform() status_code = int(c.getinfo(HTTP_CODE)) if status_code not in success_codes: message = GET_FAILED_MESSAGE % (url, status_code) raise Exception(message) finally: buf.close()
Example #5
Source File: restClient.py From recipebook with MIT License | 6 votes |
def put(url, data, encoding, headers=None): """Make a PUT request to the url, using data in the message body, with the additional headers, if any""" if headers is None: headers = {} reply = -1 # default, non-http response curl = pycurl.Curl() curl.setopt(pycurl.URL, url) if len(headers) > 0: curl.setopt(pycurl.HTTPHEADER, [k + ': ' + v for k, v in list(headers.items())]) curl.setopt(pycurl.PUT, 1) curl.setopt(pycurl.INFILESIZE, len(data)) databuffer = BytesIO(data.encode(encoding)) curl.setopt(pycurl.READDATA, databuffer) try: curl.perform() reply = curl.getinfo(pycurl.HTTP_CODE) except Exception: pass curl.close() return reply
Example #6
Source File: test_fetch.py From landscape-client with GNU General Public License v2.0 | 5 votes |
def __init__(self, result=None, infos=None, error=None): self.result = result self.infos = infos if self.infos is None: self.infos = {pycurl.HTTP_CODE: 200} self.options = {} self.performed = False self.error = error
Example #7
Source File: utils.py From marathon-lb with Apache License 2.0 | 5 votes |
def _check_status_code(self): if self.status_code == 0: self.status_code = self.curl.getinfo(pycurl.HTTP_CODE) if self.status_code != 0 and self.status_code != 200: raise Exception(str(self.status_code) + ' ' + self.url)
Example #8
Source File: test_fetch.py From landscape-client with GNU General Public License v2.0 | 5 votes |
def test_non_200_result(self): curl = CurlStub(b"result", {pycurl.HTTP_CODE: 404}) try: fetch("http://example.com", curl=curl) except HTTPCodeError as error: self.assertEqual(error.http_code, 404) self.assertEqual(error.body, b"result") else: self.fail("HTTPCodeError not raised")
Example #9
Source File: test_fetch.py From landscape-client with GNU General Public License v2.0 | 5 votes |
def test_async_fetch_with_error(self): curl = CurlStub(b"result", {pycurl.HTTP_CODE: 501}) d = fetch_async("http://example.com/", curl=curl) def got_error(failure): self.assertEqual(failure.value.http_code, 501) self.assertEqual(failure.value.body, b"result") return failure d.addErrback(got_error) self.assertFailure(d, HTTPCodeError) return d
Example #10
Source File: curl.py From tornado_http2 with Apache License 2.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): # Work around a bug in curl 7.41: if the connection is closed # during an Upgrade request, this is not reported as an error # but status is zero. if not curl_error: code = curl.getinfo(pycurl.HTTP_CODE) if code == 0: curl_error = pycurl.E_PARTIAL_FILE super(CurlAsyncHTTP2Client, self)._finish( curl, curl_error=curl_error, curl_message=curl_message)
Example #11
Source File: curl_httpclient.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, reason=info['headers'].get("X-Http-Reason", None), request_time=time.time() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #12
Source File: __init__.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def info(self): "Return a dictionary with all info on the last response." m = {} m['effective-url'] = self.handle.getinfo(pycurl.EFFECTIVE_URL) m['http-code'] = self.handle.getinfo(pycurl.HTTP_CODE) m['total-time'] = self.handle.getinfo(pycurl.TOTAL_TIME) m['namelookup-time'] = self.handle.getinfo(pycurl.NAMELOOKUP_TIME) m['connect-time'] = self.handle.getinfo(pycurl.CONNECT_TIME) m['pretransfer-time'] = self.handle.getinfo(pycurl.PRETRANSFER_TIME) m['redirect-time'] = self.handle.getinfo(pycurl.REDIRECT_TIME) m['redirect-count'] = self.handle.getinfo(pycurl.REDIRECT_COUNT) m['size-upload'] = self.handle.getinfo(pycurl.SIZE_UPLOAD) m['size-download'] = self.handle.getinfo(pycurl.SIZE_DOWNLOAD) m['speed-upload'] = self.handle.getinfo(pycurl.SPEED_UPLOAD) m['header-size'] = self.handle.getinfo(pycurl.HEADER_SIZE) m['request-size'] = self.handle.getinfo(pycurl.REQUEST_SIZE) m['content-length-download'] = self.handle.getinfo(pycurl.CONTENT_LENGTH_DOWNLOAD) m['content-length-upload'] = self.handle.getinfo(pycurl.CONTENT_LENGTH_UPLOAD) m['content-type'] = self.handle.getinfo(pycurl.CONTENT_TYPE) m['response-code'] = self.handle.getinfo(pycurl.RESPONSE_CODE) m['speed-download'] = self.handle.getinfo(pycurl.SPEED_DOWNLOAD) m['ssl-verifyresult'] = self.handle.getinfo(pycurl.SSL_VERIFYRESULT) m['filetime'] = self.handle.getinfo(pycurl.INFO_FILETIME) m['starttransfer-time'] = self.handle.getinfo(pycurl.STARTTRANSFER_TIME) m['redirect-time'] = self.handle.getinfo(pycurl.REDIRECT_TIME) m['redirect-count'] = self.handle.getinfo(pycurl.REDIRECT_COUNT) m['http-connectcode'] = self.handle.getinfo(pycurl.HTTP_CONNECTCODE) m['httpauth-avail'] = self.handle.getinfo(pycurl.HTTPAUTH_AVAIL) m['proxyauth-avail'] = self.handle.getinfo(pycurl.PROXYAUTH_AVAIL) m['os-errno'] = self.handle.getinfo(pycurl.OS_ERRNO) m['num-connects'] = self.handle.getinfo(pycurl.NUM_CONNECTS) m['ssl-engines'] = self.handle.getinfo(pycurl.SSL_ENGINES) m['cookielist'] = self.handle.getinfo(pycurl.INFO_COOKIELIST) m['lastsocket'] = self.handle.getinfo(pycurl.LASTSOCKET) m['ftp-entry-path'] = self.handle.getinfo(pycurl.FTP_ENTRY_PATH) return m
Example #13
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_request_post(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=200) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) method = 'post' url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': ['bar2a', 'bar2b']} handlers = {200: self._handler_dummy} result = pyaem.bagofrequests.request(method, url, params, handlers) curl.setopt.assert_any_call(pycurl.POST, 1) curl.setopt.assert_any_call(pycurl.POSTFIELDS, 'foo1=bar1&foo2=bar2a&foo2=bar2b') curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 6 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 6) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with() self.assertEqual(result.is_success(), True) self.assertEqual(result.message, 'some dummy message') self.assertEqual(result.response['request']['method'], 'post') self.assertEqual(result.response['request']['url'], 'http://localhost:4502/.cqactions.html') self.assertEqual(result.response['request']['params'], params)
Example #14
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_request_get(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=200) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) method = 'get' url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': ['bar2a', 'bar2b']} handlers = {200: self._handler_dummy} result = pyaem.bagofrequests.request(method, url, params, handlers) curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2a&foo2=bar2b') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 4 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 4) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with() self.assertEqual(result.is_success(), True) self.assertEqual(result.message, 'some dummy message') self.assertEqual(result.response['request']['method'], 'get') self.assertEqual(result.response['request']['url'], 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2a&foo2=bar2b') self.assertEqual(result.response['request']['params'], params)
Example #15
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_request_head(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=200) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) method = 'head' url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': ['bar2a', 'bar2b']} handlers = {200: self._handler_dummy} result = pyaem.bagofrequests.request(method, url, params, handlers) curl.setopt.assert_any_call(pycurl.HEADER, True) curl.setopt.assert_any_call(pycurl.NOBODY, True) curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 6 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 6) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with() self.assertEqual(result.is_success(), True) self.assertEqual(result.message, 'some dummy message') self.assertEqual(result.response['request']['method'], 'head') self.assertEqual(result.response['request']['url'], 'http://localhost:4502/.cqactions.html') self.assertEqual(result.response['request']['params'], params)
Example #16
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_request_unexpected_resp(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=500) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) method = 'get' url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': 'bar2'} handlers = {} try: pyaem.bagofrequests.request(method, url, params, handlers) self.fail('An exception should have been raised') except pyaem.PyAemException as exception: self.assertEqual(exception.code, 500) self.assertEqual(exception.message, 'Unexpected response\nhttp code: 500\nbody:\n') curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 4 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 4) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with()
Example #17
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_download_file(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=200) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': ['bar2a', 'bar2b']} handlers = {200: self._handler_dummy} result = pyaem.bagofrequests.download_file(url, params, handlers, file='/tmp/somefile') curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2a&foo2=bar2b') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 4 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 4) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with() self.assertEqual(result.is_success(), True) self.assertEqual(result.message, 'some dummy message') self.assertEqual(result.response['request']['method'], 'get') self.assertEqual(result.response['request']['url'], 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2a&foo2=bar2b') self.assertEqual(result.response['request']['params'], params)
Example #18
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_download_file_unexpected(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=500) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': 'bar2'} handlers = {} try: pyaem.bagofrequests.download_file(url, params, handlers, file='/tmp/somefile') self.fail('An exception should have been raised') except pyaem.PyAemException as exception: self.assertEqual(exception.code, 500) self.assertEqual(exception.message, 'Unexpected response\nhttp code: 500\nbody:\n' + 'Download http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2 to /tmp/somefile') curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html?foo1=bar1&foo2=bar2') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 5 calls including the one with pycurl.WRITEDATA and pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 4) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with()
Example #19
Source File: test_bagofrequests.py From pyaem with MIT License | 5 votes |
def test_upload_file(self): curl = pycurl.Curl() curl.setopt = MagicMock() curl.perform = MagicMock() curl.getinfo = MagicMock(return_value=200) curl.close = MagicMock() pycurl.Curl = MagicMock(return_value=curl) url = 'http://localhost:4502/.cqactions.html' params = {'foo1': 'bar1', 'foo2': 'bar2'} handlers = {200: self._handler_dummy} result = pyaem.bagofrequests.upload_file(url, params, handlers, file='/tmp/somefile') curl.setopt.assert_any_call(pycurl.POST, 1) curl.setopt.assert_any_call(pycurl.HTTPPOST, [('foo1', 'bar1'), ('foo2', 'bar2')]) curl.setopt.assert_any_call(pycurl.URL, 'http://localhost:4502/.cqactions.html') curl.setopt.assert_any_call(pycurl.FOLLOWLOCATION, 1) curl.setopt.assert_any_call(pycurl.FRESH_CONNECT, 1) # 6 calls including the one with pycurl.WRITEFUNCTION self.assertEqual(curl.setopt.call_count, 6) curl.perform.assert_called_once_with() curl.getinfo.assert_called_once_with(pycurl.HTTP_CODE) curl.close.assert_called_once_with() self.assertEqual(result.is_success(), True) self.assertEqual(result.message, 'some dummy message') self.assertEqual(result.response['request']['method'], 'post') self.assertEqual(result.response['request']['url'], 'http://localhost:4502/.cqactions.html') self.assertEqual(result.response['request']['params'], params)
Example #20
Source File: downloader.py From Paradrop with Apache License 2.0 | 5 votes |
def meta(self): """ Return repository meta data as a dictionary. """ result = {} if self.commitHash is not None: result['CommitHash'] = self.commitHash if self.commitMessage is not None: result['CommitMessage'] = self.commitMessage # If set, self.commitHash may be more specific than self.checkout (e.g. # commit hash vs. branch name). It is better to use the most specific # one to query for meta data. checkout = self.commitHash if checkout is None: checkout = self.checkout url = "https://api.github.com/repos/{owner}/{repo}/commits/{sha}".format( owner=self.repo_owner, repo=self.repo_name, sha=checkout) conn = self._create_curl_conn(url) response = six.StringIO() conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() http_code = conn.getinfo(pycurl.HTTP_CODE) if http_code == 200: data = json.loads(response.getvalue()) result['Commit'] = data['commit'] result['CommitMessage'] = data['commit']['message'] return result
Example #21
Source File: tms_image.py From gbdxtools with MIT License | 5 votes |
def load_url(url, shape=(3, 256, 256)): if shape != (3, 256, 256): shape = shape[0][0], shape[1][0], shape[2][0] """ Loads a tms png inside a thread and returns as an ndarray """ thread_id = threading.current_thread().ident _curl = _curl_pool[thread_id] _curl.setopt(_curl.URL, url) _curl.setopt(pycurl.NOSIGNAL, 1) # cert errors on windows _curl.setopt(pycurl.CAINFO, certifi.where()) _, ext = os.path.splitext(urlparse(url).path) with NamedTemporaryFile(prefix="gbdxtools", suffix=ext, delete=False) as temp: # TODO: apply correct file extension _curl.setopt(_curl.WRITEDATA, temp.file) _curl.perform() code = _curl.getinfo(pycurl.HTTP_CODE) try: if(code != 200): raise TypeError("Request for {} returned unexpected error code: {}".format(url, code)) temp.file.flush() temp.close() arr = np.rollaxis(imread(temp.name), 2, 0) except Exception as e: print(e) arr = np.zeros(shape, dtype=np.uint8) _curl.close() del _curl_pool[thread_id] finally: temp.close() os.remove(temp.name) return arr
Example #22
Source File: downloader.py From Paradrop with Apache License 2.0 | 5 votes |
def download(self): conn = self._create_curl_conn(self.url) self.tarFile = os.path.join(self.workDir, "source.tar") with open(self.tarFile, "w") as output: conn.setopt(pycurl.WRITEFUNCTION, output.write) conn.perform() http_code = conn.getinfo(pycurl.HTTP_CODE) if http_code != 200: raise Exception("Error downloading archive: response {}".format(http_code)) return self.extract()
Example #23
Source File: httpclient.py From honeything with GNU General Public License v3.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, request_time=time.time() - info["start_time"])) except (KeyboardInterrupt, SystemExit): raise except: logging.error("Exception in callback %r", info["callback"], exc_info=True)
Example #24
Source File: httpclient.py From honeything with GNU General Public License v3.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code body = None 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: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, request_time=time.time() - info["start_time"])) except (KeyboardInterrupt, SystemExit): raise except: logging.error("Exception in callback %r", info["callback"], exc_info=True)
Example #25
Source File: curl_httpclient.py From honeything with GNU General Public License v3.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, request_time=monotime() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #26
Source File: curl_httpclient.py From tornado-zh with MIT License | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, reason=info['headers'].get("X-Http-Reason", None), request_time=time.time() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #27
Source File: downloader.py From Paradrop with Apache License 2.0 | 5 votes |
def download(self): url = "https://github.com/{}/{}/tarball/{}".format( self.repo_owner, self.repo_name, self.checkout) conn = self._create_curl_conn(url) self.tarFile = os.path.join(self.workDir, "source.tar.gz") with open(self.tarFile, "w") as output: conn.setopt(pycurl.WRITEFUNCTION, output.write) conn.perform() http_code = conn.getinfo(pycurl.HTTP_CODE) if http_code != 200: raise Exception("Error downloading archive: response {}".format(http_code)) return self.extract()
Example #28
Source File: curl_httpclient.py From tornado-zh with MIT License | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, reason=info['headers'].get("X-Http-Reason", None), request_time=time.time() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #29
Source File: curl.py From pulsar with Apache License 2.0 | 5 votes |
def post_file(url, path): if not os.path.exists(path): # pycurl doesn't always produce a great exception for this, # wrap it in a better one. message = NO_SUCH_FILE_MESSAGE % (path, url) raise Exception(message) c = _new_curl_object_for_url(url) c.setopt(c.HTTPPOST, [("file", (c.FORM_FILE, path.encode('ascii')))]) c.perform() status_code = c.getinfo(HTTP_CODE) if int(status_code) != 200: message = POST_FAILED_MESSAGE % (url, status_code) raise Exception(message)
Example #30
Source File: curl_httpclient.py From viewfinder with Apache License 2.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code 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) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, request_time=time.time() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])