Python pycurl.HTTPHEADER Examples
The following are 30
code examples of pycurl.HTTPHEADER().
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: downloader.py From Paradrop with Apache License 2.0 | 7 votes |
def _create_curl_conn(self, url): """ Create a cURL connection object with useful default settings. """ headers = [] if self.user is not None and self.secret is not None: b64cred = base64.b64encode("{}:{}".format(self.user, self.secret)) headers.append("Authorization: Basic {}".format(b64cred)) conn = pycurl.Curl() if len(headers) > 0: conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.URL, url) # github often redirects conn.setopt(pycurl.FOLLOWLOCATION, 1) return conn
Example #2
Source File: smgr_restart_server.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, payload): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/server/restart" %( ip, port) conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None # end def send_REST_request
Example #3
Source File: sm_ansible_utils.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(self, ip, port, endpoint, payload, method='POST', urlencode=False): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" %(ip, port, endpoint) conn = pycurl.Curl() if method == "PUT": conn.setopt(pycurl.CUSTOMREQUEST, method) if urlencode == False: first = True for k,v in payload.iteritems(): if first: url = url + '?' first = False else: url = url + '&' url = url + ("%s=%s" % (k,v)) else: url = url + '?' + payload if self.logger: self.logger.log(self.logger.INFO, "Sending post request to %s" % url) conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) if urlencode == False: conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #4
Source File: smgr_status.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, object, match_key, match_value, detail): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" % (ip, port, object) args_str = '' if match_key: args_str += match_key + "=" + match_value if detail: args_str += "&detail" if args_str != '': url += "?" + args_str conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.HTTPGET, 1) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None # end def send_REST_request
Example #5
Source File: test_fetch.py From landscape-client with GNU General Public License v2.0 | 6 votes |
def test_headers(self): curl = CurlStub(b"result") result = fetch("http://example.com", headers={"a": "1", "b": "2"}, curl=curl) self.assertEqual(result, b"result") self.assertEqual(curl.options, {pycurl.URL: b"http://example.com", pycurl.FOLLOWLOCATION: 1, pycurl.MAXREDIRS: 5, pycurl.CONNECTTIMEOUT: 30, pycurl.LOW_SPEED_LIMIT: 1, pycurl.LOW_SPEED_TIME: 600, pycurl.NOSIGNAL: 1, pycurl.WRITEFUNCTION: Any(), pycurl.HTTPHEADER: ["a: 1", "b: 2"], pycurl.DNS_CACHE_TIMEOUT: 0, pycurl.ENCODING: b"gzip,deflate"})
Example #6
Source File: smgr_reimage_server.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, payload): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/server/reimage" %( ip, port) conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #7
Source File: smgr_contrail_status.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, object, match_key, match_value, detail): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" % (ip, port, object) args_str = '' if match_key: args_str += match_key + "=" + match_value if detail: args_str += "&detail" if args_str != '': url += "?" + args_str conn = pycurl.Curl() conn.setopt(pycurl.TIMEOUT, 1) conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.HTTPGET, 1) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None # end def send_REST_request
Example #8
Source File: smgr_monitoring.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(self, server_ip, port): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" % (server_ip, port, 'MonitorInfo') args_str = '' conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.HTTPGET, 1) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() data_dict = response.getvalue() data_dict = dict(json.loads(data_dict)) data_list = list(data_dict["__ServerMonitoringInfoTrace_list"]["ServerMonitoringInfoTrace"]) return data_list except Exception as e: print "Error is: " + str(e) return None # end def send_REST_request
Example #9
Source File: smgr_provision_server.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, payload): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/server/provision" %( ip, port) conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #10
Source File: utils.py From falsy with MIT License | 6 votes |
def setup_curl_for_post(c, p, data_buf, headers=None, share=None): setup_curl_basic(c, p, data_buf, headers, share) httpheader = p.get('httpheader', ['Accept: application/json', "Content-type: application/json"]) if httpheader: # c.setopt(pycurl.HEADER, p.get('header', 1)) c.setopt(pycurl.HTTPHEADER, httpheader) post301 = getattr(pycurl, 'POST301', None) if post301 is not None: # Added in libcurl 7.17.1. c.setopt(post301, True) c.setopt(pycurl.POST, 1) postfields = p.get('postfields') if postfields: postfields = json.dumps(postfields, indent=2, ensure_ascii=False) c.setopt(pycurl.POSTFIELDS, postfields) return c
Example #11
Source File: smgr_delete.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, object, key, value, force=False): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s?%s=%s" %( ip, port, object, urllib.quote_plus(key), urllib.quote_plus(value)) if force: url += "&force" conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.CUSTOMREQUEST, "delete") conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None # end def send_REST_request
Example #12
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 #13
Source File: server_pre_install.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, object, payload): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" %( ip, port, object) conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.CUSTOMREQUEST, "PUT") conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #14
Source File: server_post_install.py From contrail-server-manager with Apache License 2.0 | 6 votes |
def send_REST_request(ip, port, object, payload): try: response = StringIO() headers = ["Content-Type:application/json"] url = "http://%s:%s/%s" %( ip, port, object) conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.CUSTOMREQUEST, "PUT") conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #15
Source File: patator_ext.py From project-black with GNU General Public License v2.0 | 6 votes |
def perform_fp(fp, method, url, header='', body=''): #logger.debug('perform: %s' % url) fp.setopt(pycurl.URL, url) if method == 'GET': fp.setopt(pycurl.HTTPGET, 1) elif method == 'POST': fp.setopt(pycurl.POST, 1) fp.setopt(pycurl.POSTFIELDS, body) elif method == 'HEAD': fp.setopt(pycurl.NOBODY, 1) else: fp.setopt(pycurl.CUSTOMREQUEST, method) headers = [h.strip('\r') for h in header.split('\n') if h] fp.setopt(pycurl.HTTPHEADER, headers) fp.perform()
Example #16
Source File: downloader.py From Paradrop with Apache License 2.0 | 6 votes |
def _create_curl_conn(self, url): """ Create a cURL connection object with useful default settings. """ headers = [] if self.user is not None and self.secret is not None: b64cred = base64.b64encode("{}:{}".format(self.user, self.secret)) headers.append("Authorization: Basic {}".format(b64cred)) conn = pycurl.Curl() if len(headers) > 0: conn.setopt(pycurl.HTTPHEADER, headers) conn.setopt(pycurl.URL, url) # github often redirects conn.setopt(pycurl.FOLLOWLOCATION, 1) return conn
Example #17
Source File: smgr_add.py From contrail-server-manager with Apache License 2.0 | 5 votes |
def send_REST_request(ip, port, object, payload, match_key=None, match_value=None, detail=False, method="PUT"): try: args_str = "" response = StringIO() headers = ["Content-Type:application/json"] if method == "PUT": url = "http://%s:%s/%s" %( ip, port, object) elif method == "GET": url = "http://%s:%s/%s" % (ip, port, object) if match_key: args_str += match_key + "=" + match_value if detail: args_str += "&detail" if args_str != '': url += "?" + args_str else: return None conn = pycurl.Curl() conn.setopt(pycurl.URL, url) conn.setopt(pycurl.HTTPHEADER, headers) if method == "PUT": conn.setopt(pycurl.POST, 1) conn.setopt(pycurl.POSTFIELDS, '%s'%json.dumps(payload)) conn.setopt(pycurl.CUSTOMREQUEST, "PUT") elif method == "GET": conn.setopt(pycurl.HTTPGET, 1) conn.setopt(pycurl.WRITEFUNCTION, response.write) conn.perform() return response.getvalue() except: return None
Example #18
Source File: toolClass.py From Video-Downloader with GNU General Public License v2.0 | 5 votes |
def getPage (self, url, requestHeader = []) : resultFormate = StringIO.StringIO() fakeIp = self.fakeIp() requestHeader.append('CLIENT-IP:' + fakeIp) requestHeader.append('X-FORWARDED-FOR:' + fakeIp) try: curl = pycurl.Curl() curl.setopt(pycurl.URL, url.strip()) curl.setopt(pycurl.ENCODING, 'gzip,deflate') curl.setopt(pycurl.HEADER, 1) curl.setopt(pycurl.TIMEOUT, 120) curl.setopt(pycurl.SSL_VERIFYPEER, 0) curl.setopt(pycurl.SSL_VERIFYHOST, 0) curl.setopt(pycurl.HTTPHEADER, requestHeader) curl.setopt(pycurl.WRITEFUNCTION, resultFormate.write) curl.perform() headerSize = curl.getinfo(pycurl.HEADER_SIZE) curl.close() header = resultFormate.getvalue()[0 : headerSize].split('\r\n') body = resultFormate.getvalue()[headerSize : ] except Exception, e: header = '' body = ''
Example #19
Source File: hub.py From robot with MIT License | 5 votes |
def set_curl_headers(self, curl, headers): """ 将一个字典设置为 curl 的头 """ h = [] for key, val in headers.items(): h.append("{0}: {1}".format(key, val)) curl.setopt(pycurl.HTTPHEADER, h)
Example #20
Source File: transport.py From termite-visualizations with BSD 3-Clause "New" or "Revised" License | 5 votes |
def request(self, url, method, body, headers): c = pycurl.Curl() c.setopt(pycurl.URL, str(url)) if 'proxy_host' in self.proxy: c.setopt(pycurl.PROXY, self.proxy['proxy_host']) if 'proxy_port' in self.proxy: c.setopt(pycurl.PROXYPORT, self.proxy['proxy_port']) if 'proxy_user' in self.proxy: c.setopt(pycurl.PROXYUSERPWD, "%(proxy_user)s:%(proxy_pass)s" % self.proxy) self.buf = StringIO() c.setopt(pycurl.WRITEFUNCTION, self.buf.write) #c.setopt(pycurl.READFUNCTION, self.read) #self.body = StringIO(body) #c.setopt(pycurl.HEADERFUNCTION, self.header) if self.cacert: c.setopt(c.CAINFO, str(self.cacert)) c.setopt(pycurl.SSL_VERIFYPEER, self.cacert and 1 or 0) c.setopt(pycurl.SSL_VERIFYHOST, self.cacert and 2 or 0) c.setopt(pycurl.CONNECTTIMEOUT, self.timeout/6) c.setopt(pycurl.TIMEOUT, self.timeout) if method=='POST': c.setopt(pycurl.POST, 1) c.setopt(pycurl.POSTFIELDS, body) if headers: hdrs = ['%s: %s' % (str(k), str(v)) for k, v in headers.items()] ##print hdrs c.setopt(pycurl.HTTPHEADER, hdrs) c.perform() ##print "pycurl perform..." c.close() return {}, self.buf.getvalue()
Example #21
Source File: __init__.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def __request(self, relative_url=None): "Perform the pending request." if self.fakeheaders: self.set_option(pycurl.HTTPHEADER, self.fakeheaders) if relative_url: self.set_option(pycurl.URL, urljoin(self.base_url, relative_url)) self.payload = None self.hdr = "" self.handle.perform() self.payload = self.payload_io.getvalue() return self.payload
Example #22
Source File: http.py From Paradrop with Apache License 2.0 | 5 votes |
def request(self, method, url, body=None): def makeRequest(ignored): curl = CurlRequestDriver.curl curl.reset() curl.setopt(pycurl.URL, url) curl.setopt(pycurl.HEADERFUNCTION, self.receiveHeaders) curl.setopt(pycurl.WRITEFUNCTION, self.buffer.write) curl.setopt(pycurl.CUSTOMREQUEST, method) if body is not None: curl.setopt(pycurl.POSTFIELDS, body) headers = [] for key, value in six.iteritems(self.headers): headers.append("{}: {}".format(key, value)) curl.setopt(pycurl.HTTPHEADER, headers) d = threads.deferToThread(curl.perform) d.addCallback(self.receive) return d def releaseLock(result): CurlRequestDriver.lock.release() # Forward the result to the next handler. return result d = CurlRequestDriver.lock.acquire() # Make the request once we acquire the semaphore. d.addCallback(makeRequest) # Release the semaphore regardless of how the request goes. d.addBoth(releaseLock) return d
Example #23
Source File: CurlHelper.py From AdvancedDownloader with GNU General Public License v3.0 | 5 votes |
def _init_base_headers_curl(self): format_header = ["{}: {}".format(key, value) for key, value in self._headers.items()] format_cookie = "; ".join(["{}={}".format(key, value) for key, value in self._cookies.items()]) self._curl = pycurl.Curl() self._curl.setopt(pycurl.URL, self._link) self._curl.setopt(pycurl.CONNECTTIMEOUT, 10) self._curl.setopt(pycurl.TIMEOUT, 30) self._curl.setopt(pycurl.HTTPHEADER, format_header) self._curl.setopt(pycurl.COOKIE, format_cookie) self._curl.setopt(pycurl.CAINFO, "cert/ca-cert.pem")
Example #24
Source File: homura.py From homura with BSD 2-Clause "Simplified" License | 5 votes |
def curl(self): """Sending a single cURL request to download""" c = self._pycurl # Resume download if os.path.exists(self.path) and self.resume: mode = 'ab' self.downloaded = os.path.getsize(self.path) c.setopt(pycurl.RESUME_FROM, self.downloaded) else: mode = 'wb' with open(self.path, mode) as f: c.setopt(c.URL, utf8_encode(self.url)) if self.auth: c.setopt(c.USERPWD, '%s:%s' % self.auth) c.setopt(c.USERAGENT, self._user_agent) c.setopt(c.WRITEDATA, f) h = self._get_pycurl_headers() if h is not None: c.setopt(pycurl.HTTPHEADER, h) c.setopt(c.NOPROGRESS, 0) c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(c.PROGRESSFUNCTION, self.progress) self._fill_in_cainfo() if self._pass_through_opts: for key, value in self._pass_through_opts.items(): c.setopt(key, value) c.perform()
Example #25
Source File: request_base_functions.py From APIFuzzer with GNU General Public License v3.0 | 5 votes |
def format_pycurl_header(self, headers): """ Pycurl and other http clients are picky, so this function tries to put everyting into the field as it can. :param headers: http headers :return: http headers :rtype: list of dicts """ _dummy_curl = pycurl.Curl() _tmp = dict() _return = list() for k, v in headers.items(): original_value = v iteration = 0 self.chop_left = True self.chop_right = True while True: iteration = iteration + 1 try: _dummy_curl.setopt(pycurl.HTTPHEADER, ['{}: {}'.format(k, v).encode()]) _tmp[k] = v break except ValueError as e: self.logger.debug('{} Problem at adding {} to the header. Issue was:{}'.format(iteration, k, e)) if len(v): v = self.chop_fuzz_value(original_fuzz_value=original_value, fuzz_value=v) else: self.logger.info('The whole header value was removed, using empty string instead') _tmp[k] = "" break for k, v in _tmp.items(): _return.append('{}: {}'.format(k, v).encode()) return _return
Example #26
Source File: mimir.py From Mimir with GNU General Public License v3.0 | 5 votes |
def feed(): b = StringIO.StringIO() # Options for PyCurl opts = ['X-HoneyDb-ApiId: ' + DB_API_ID, 'X-HoneyDb-ApiKey: ' + DB_API_KEY] c.setopt(pycurl.HTTPHEADER, (opts)) c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(pycurl.URL, "https://riskdiscovery.com/honeydb/api/twitter-threat-feed") c.setopt(c.WRITEDATA, b) try: c.perform() except Exception as e: print "\n[" + t.red("!") + "]Critical. An error was raised with the following message" print e os.system("clear") print "\n\n[" + t.green("+") + "]Retrieved Threat Feed, formatting..." time.sleep(1) response_f = json.loads(b. getvalue()) pprint(response_f) format = json.dumps(response_f, indent = 2) with open('feed.log', 'ab') as outfile: outfile.write(format) outfile.close() print "\n\nResults saved to 'feed.log' in the current directory"
Example #27
Source File: mimir.py From Mimir with GNU General Public License v3.0 | 5 votes |
def hosts(): a = StringIO.StringIO() # Options for PyCurl opts = ['X-HoneyDb-ApiId: ' + DB_API_ID, 'X-HoneyDb-ApiKey: ' + DB_API_KEY] c.setopt(pycurl.HTTPHEADER, (opts)) c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(pycurl.URL, "https://riskdiscovery.com/honeydb/api/bad-hosts") c.setopt(c.WRITEDATA, a) try: c.perform() except Exception as e: print "\n[" + t.red("!") + "]Critical. An error was raised with the following message" print e os.system("clear") print "\n\n[" + t.green("+") + "]Retrieved Bad Hosts, formatting..." time.sleep(1) response_h = json.loads(a. getvalue()) pprint(response_h) format = json.dumps(response_h, indent = 2) with open('hosts.log', 'ab') as outfile: outfile.write(format) outfile.close() print "\n\nResults saved to 'hosts.log' in the current directory"
Example #28
Source File: Checkpoint.py From Instagram-API with MIT License | 5 votes |
def request(self, endpoint, headers=None, post=None, first=True): buffer = BytesIO() ch = pycurl.Curl() ch.setopt(pycurl.URL, endpoint) ch.setopt(pycurl.USERAGENT, self.userAgent) ch.setopt(pycurl.WRITEFUNCTION, buffer.write) ch.setopt(pycurl.FOLLOWLOCATION, True) ch.setopt(pycurl.HEADER, True) if headers: ch.setopt(pycurl.HTTPHEADER, headers) ch.setopt(pycurl.VERBOSE, self.debug) ch.setopt(pycurl.SSL_VERIFYPEER, False) ch.setopt(pycurl.SSL_VERIFYHOST, False) ch.setopt(pycurl.COOKIEFILE, self.settingsPath + self.username + '-cookies.dat') ch.setopt(pycurl.COOKIEJAR, self.settingsPath + self.username + '-cookies.dat') if post: import urllib ch.setopt(pycurl.POST, len(post)) ch.setopt(pycurl.POSTFIELDS, urllib.urlencode(post)) ch.perform() resp = buffer.getvalue() header_len = ch.getinfo(pycurl.HEADER_SIZE) header = resp[0: header_len] body = resp[header_len:] ch.close() if self.debug: import urllib print("REQUEST: " + endpoint) if post is not None: if not isinstance(post, list): print('DATA: ' + urllib.unquote_plus(json.dumps(post))) print("RESPONSE: " + body + "\n") return [header, json_decode(body)]
Example #29
Source File: utils.py From falsy with MIT License | 5 votes |
def setup_curl_for_get(c, p, data_buf, headers=None, share=None): setup_curl_basic(c, p, data_buf, headers, share) httpheader = p.get('httpheader') if httpheader: # c.setopt(pycurl.HEADER, p.get('header', 1)) c.setopt(c.HTTPHEADER, httpheader) return c
Example #30
Source File: http_client.py From pledgeservice with Apache License 2.0 | 5 votes |
def request(self, method, url, headers, post_data=None): s = util.StringIO.StringIO() curl = pycurl.Curl() if method == 'get': curl.setopt(pycurl.HTTPGET, 1) elif method == 'post': curl.setopt(pycurl.POST, 1) curl.setopt(pycurl.POSTFIELDS, post_data) else: curl.setopt(pycurl.CUSTOMREQUEST, method.upper()) # pycurl doesn't like unicode URLs curl.setopt(pycurl.URL, util.utf8(url)) curl.setopt(pycurl.WRITEFUNCTION, s.write) curl.setopt(pycurl.NOSIGNAL, 1) curl.setopt(pycurl.CONNECTTIMEOUT, 30) curl.setopt(pycurl.TIMEOUT, 80) curl.setopt(pycurl.HTTPHEADER, ['%s: %s' % (k, v) for k, v in headers.iteritems()]) if self._verify_ssl_certs: curl.setopt(pycurl.CAINFO, os.path.join( os.path.dirname(__file__), 'data/ca-certificates.crt')) else: curl.setopt(pycurl.SSL_VERIFYHOST, False) try: curl.perform() except pycurl.error, e: self._handle_request_error(e)