def get_gist(slug, version, fresh): """Download a gist""" if '/' in slug: parts = slug.split('/') username, title = parts[0], parts[1] url = _u('user/' + username + '/gist/' + title + _v(version)) else: url = _u('gist/' + slug + _v(version)) res = get(url, headers=_h(fresh)) if res.status_code == 200: return res.json()['data'] raise Exception('Failed to retrieve Gist: ' + pretty(res))
def get_gist(slug, version=None, check_exists=True): """Get the metadata for a gist""" if '/' in slug: parts = slug.split('/') username, title = parts[0], parts[1] url = _u('user/' + username + '/gist/' + title + _v(version)) else: url = _u('gist/' + slug + _v(version)) res = get(url=url, headers=_h()) if res.status_code == 200: return res.json()['data'] elif check_exists and res.status_code == 404: return False raise Exception('Failed to retrieve metadata for notebook "' + slug + '": ' + pretty(res))
def post_blocks(blocks, version=None): url = _u('/data/record' + _v(version)) res = post(url, json=blocks, headers=_h()) if res.status_code == 200: return res.json()['data'] else: raise ApiError('Data logging failed: ' + pretty(res))
def get_gist(slug, version, fresh): """Download a gist""" if '/' in slug: parts = slug.split('/') username, title = parts[0], parts[1] url = _u('user/' + username + '/gist/' + title + _v(version)) else: url = _u('gist/' + slug + _v(version)) res = get(url, headers=_h(fresh)) if res.status_code == 200: return res.json()['data'] elif res.status_code == 401: log('This notebook does not exist or is private. Please provide the API key') get_api_key() return get_gist(slug, version, fresh) else: log('Failed to retrieve notebook: ' + pretty(res), error=True)
def post_records(gist_slug, tracking_slugs, version=None): """Associated tracked records with a commit""" url = _u('/data/' + gist_slug + '/commit' + _v(version)) res = post(url, json=tracking_slugs, headers=_h()) if res.status_code == 200: return res.json()['data'] else: raise ApiError('Data logging failed: ' + pretty(res))
def upload_file(gist_slug, file, folder=None, version=None, artifact=False, version_title=None): """Upload an additional file to a gist""" data = {'artifact': 'true'} if artifact else {} if folder: data['folder'] = folder if version_title: data['version_title'] = version_title res = post(url=_u('/gist/' + gist_slug + '/upload' + _v(version)), files={'files': file}, data=data, headers=_h()) if res.status_code == 200: return res.json()['data'] raise ApiError('File upload failed: ' + pretty(res))
def upload_file(gist_slug, file, folder=None, version=None, artifact=False, version_title=None): """Upload an additional file to a gist""" data = {'artifact': 'true'} if artifact else {} if folder: data['folder'] = folder if version_title: data['version_title'] = version_title res = post(url=_u('/gist/' + gist_slug + '/upload' + _v(version)), files={'files': file}, data=data, headers=_h()) if res.status_code == 200: data, warning = parse_success_response(res) if warning: log(warning, error=True) return data raise ApiError('File upload failed: ' + pretty(res))
def test_v(): assert _v(3) == "?gist_version=3" assert _v(None) == ""