feat(ST2.GitPackages): bump up all packages

- Refresh PackageCache with latest versions of everything
This commit is contained in:
Iristyle
2013-09-16 22:32:31 -04:00
parent fad58909f7
commit 3a0c5ce9e2
43 changed files with 6367 additions and 1395 deletions

View File

@@ -1,9 +1,12 @@
import sublime
import sys
import os.path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import sublime
import json
import sublime_requests as requests
import sys
import logging
from requests.exceptions import ConnectionError
import pprint
logging.basicConfig(format='%(asctime)s %(message)s')
logger = logging.getLogger()
@@ -19,16 +22,38 @@ class GitHubApi(object):
"Raised if we get a 401 from GitHub"
pass
class OTPNeededException(Exception):
"Raised if 2FA is configured and we need a one-time password"
pass
class UnknownException(Exception):
"Raised if we get a response code we don't recognize from GitHub"
pass
def __init__(self, base_uri="https://api.github.com", token=None, debug=False):
class ConnectionException(Exception):
"Raised if we get a ConnectionError"
pass
class NullResponseException(Exception):
"Raised if we get an empty response (i.e., CurlSession failure)"
pass
def __init__(self, base_uri="https://api.github.com", token=None, debug=False, proxies=None, force_curl=False):
self.base_uri = base_uri
self.token = token
self.debug = debug
self.proxies = proxies
if debug:
try:
import http.client as httplib
except ImportError:
import httplib
httplib.HTTPConnection.debuglevel = 1
logger.setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True
# set up requests session with the root CA cert bundle
cert_path = os.path.join(sublime.packages_path(), "sublime-github", "ca-bundle.crt")
@@ -36,22 +61,29 @@ class GitHubApi(object):
logger.warning("Root CA cert bundle not found at %s! Not verifying requests." % cert_path)
cert_path = None
self.rsession = requests.session(verify=cert_path,
config={'verbose': sys.stderr if self.debug else None})
force_curl=force_curl)
def get_token(self, username, password):
def get_token(self, username, password, one_time_password=None):
auth_data = {
"scopes": ["gist"],
"note": "Sublime GitHub",
"note_url": "https://github.com/bgreenlee/sublime-github"
}
headers = {'X-GitHub-OTP': one_time_password} if one_time_password else {}
resp = self.rsession.post(self.base_uri + "/authorizations",
headers=headers,
auth=(username, password),
proxies=self.proxies,
data=json.dumps(auth_data))
if resp.status_code == requests.codes.CREATED:
logger.debug(pprint.saferepr(resp))
data = json.loads(resp.text)
return data["token"]
elif resp.status_code == requests.codes.UNAUTHORIZED:
raise self.UnauthorizedException()
if resp.headers['X-GitHub-OTP'].startswith('required'):
raise self.OTPNeededException()
else:
raise self.UnauthorizedException()
else:
raise self.UnknownException("%d %s" % (resp.status_code, resp.text))
@@ -79,11 +111,20 @@ class GitHubApi(object):
if method == 'get' and url in self.etags:
headers["If-None-Match"] = self.etags[url]
logger.debug("request: %s %s %s %s" % (method, url, headers, params))
resp = self.rsession.request(method, url,
try:
resp = self.rsession.request(method, url,
headers=headers,
params=params,
data=data,
proxies=self.proxies,
allow_redirects=True)
if not resp:
raise self.NullResponseException("Empty response received.")
except ConnectionError as e:
raise self.ConnectionException("Connection error, "
"please verify your internet connection: %s" % e)
full_url = resp.url
logger.debug("response: %s" % resp.headers)
if resp.status_code in [requests.codes.OK,
@@ -112,7 +153,7 @@ class GitHubApi(object):
"files": {filename: {"content": content}}})
def update_gist(self, gist, content):
filename = gist["files"].keys()[0]
filename = list(gist["files"].keys())[0]
return self.patch("/gists/" + gist["id"],
{"description": gist["description"],
"files": {filename: {"content": content}}})