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