import sys import os.path sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) import re import requests from requests.status_codes import codes import httplib import commandline import sublime from StringIO import StringIO from httplib import HTTPResponse import logging logging.basicConfig(format='%(asctime)s %(message)s') logger = logging.getLogger() class CurlSession(object): class FakeSocket(StringIO): def makefile(self, *args, **kw): return self def __init__(self, verify=None): self.verify = verify def _parse_http(self, text): # if the response text starts with a 302, skip to the next non-302 header if re.match(r'^HTTP/.*?\s302 Found', text): m = re.search(r'(HTTP/\d+\.\d+\s(?!302 Found).*$)', text, re.S) if not m: raise Exception("Unrecognized response: %s" % text) else: text = m.group(1) # remove Transfer-Encoding: chunked header, as it causes reading the response to fail # first do a quick check for it, so we can avoid doing the expensive negative-lookbehind # regex if we don't need it if "Transfer-Encoding: chunked" in text: # we do the negative-lookbehind to make sure we only strip the Transfer-Encoding # string in the header text = re.sub(r'(?