feat(ST2.GitPackages): bump up all packages
- Refresh PackageCache with latest versions of everything
This commit is contained in:
@@ -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}}})
|
||||
|
Reference in New Issue
Block a user