Handle the assets uploading in the GitHub API library.
This commit is contained in:
parent
fe67ecd7fd
commit
3586565bba
1 changed files with 13 additions and 1 deletions
|
@ -1,27 +1,39 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
GITHUB_URL = 'https://api.github.com'
|
GITHUB_URL = 'https://api.github.com'
|
||||||
|
GITHUB_UPLOAD_ASSET_URL = 'https://uploads.github.com'
|
||||||
|
|
||||||
class GitHub:
|
class GitHub:
|
||||||
def __init__(self, access_token):
|
def __init__(self, access_token):
|
||||||
self._authorization = 'token %s' % access_token
|
self._authorization = 'token %s' % access_token
|
||||||
|
|
||||||
|
pattern = '^/repos/{0}/{0}/releases/{1}/assets$'.format('[^/]+', '[0-9]+')
|
||||||
|
self._releases_upload_api_pattern = re.compile(pattern)
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
def __getattr__(self, attr):
|
||||||
return _Callable(self, '/%s' % attr)
|
return _Callable(self, '/%s' % attr)
|
||||||
|
|
||||||
def _http(self, method, path, **kw):
|
def _http(self, method, path, **kw):
|
||||||
url = '%s%s' % (GITHUB_URL, path)
|
|
||||||
if not 'headers' in kw:
|
if not 'headers' in kw:
|
||||||
kw['headers'] = dict()
|
kw['headers'] = dict()
|
||||||
headers = kw['headers']
|
headers = kw['headers']
|
||||||
headers['Authorization'] = self._authorization
|
headers['Authorization'] = self._authorization
|
||||||
headers['Accept'] = 'application/vnd.github.manifold-preview'
|
headers['Accept'] = 'application/vnd.github.manifold-preview'
|
||||||
|
|
||||||
|
# Data are sent in JSON format.
|
||||||
if 'data' in kw:
|
if 'data' in kw:
|
||||||
kw['data'] = json.dumps(kw['data'])
|
kw['data'] = json.dumps(kw['data'])
|
||||||
|
|
||||||
|
# Switch to a different domain for the releases uploading API.
|
||||||
|
if self._releases_upload_api_pattern.match(path):
|
||||||
|
url = '%s%s' % (GITHUB_UPLOAD_ASSET_URL, path)
|
||||||
|
else:
|
||||||
|
url = '%s%s' % (GITHUB_URL, path)
|
||||||
|
|
||||||
r = getattr(requests, method)(url, **kw).json()
|
r = getattr(requests, method)(url, **kw).json()
|
||||||
if 'message' in r:
|
if 'message' in r:
|
||||||
raise Exception(json.dumps(r, indent=2, separators=(',', ': ')))
|
raise Exception(json.dumps(r, indent=2, separators=(',', ': ')))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue