|
|
@ -15,7 +15,6 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
|
|
|
|
|
|
|
from youtube_dl.compat import ( |
|
|
|
compat_basestring, |
|
|
|
compat_input, |
|
|
|
compat_getpass, |
|
|
|
compat_print, |
|
|
|
compat_urllib_request, |
|
|
@ -40,28 +39,20 @@ class GitHubReleaser(object): |
|
|
|
try: |
|
|
|
info = netrc.netrc().authenticators(self._NETRC_MACHINE) |
|
|
|
if info is not None: |
|
|
|
self._username = info[0] |
|
|
|
self._password = info[2] |
|
|
|
self._token = info[2] |
|
|
|
compat_print('Using GitHub credentials found in .netrc...') |
|
|
|
return |
|
|
|
else: |
|
|
|
compat_print('No GitHub credentials found in .netrc') |
|
|
|
except (IOError, netrc.NetrcParseError): |
|
|
|
compat_print('Unable to parse .netrc') |
|
|
|
self._username = compat_input( |
|
|
|
'Type your GitHub username or email address and press [Return]: ') |
|
|
|
self._password = compat_getpass( |
|
|
|
'Type your GitHub password and press [Return]: ') |
|
|
|
self._token = compat_getpass( |
|
|
|
'Type your GitHub PAT (personal access token) and press [Return]: ') |
|
|
|
|
|
|
|
def _call(self, req): |
|
|
|
if isinstance(req, compat_basestring): |
|
|
|
req = sanitized_Request(req) |
|
|
|
# Authorizing manually since GitHub does not response with 401 with |
|
|
|
# WWW-Authenticate header set (see |
|
|
|
# https://developer.github.com/v3/#basic-authentication) |
|
|
|
b64 = base64.b64encode( |
|
|
|
('%s:%s' % (self._username, self._password)).encode('utf-8')).decode('ascii') |
|
|
|
req.add_header('Authorization', 'Basic %s' % b64) |
|
|
|
req.add_header('Authorization', 'token %s' % self._token) |
|
|
|
response = self._opener.open(req).read().decode('utf-8') |
|
|
|
return json.loads(response) |
|
|
|
|
|
|
|