def render_gist(request, id, raw): """Render a raw gist and store it""" gist = { 'id': raw['id'], 'html_url': raw['html_url'], 'public': raw['public'], 'description': raw['description'], 'created_at': iso8601.parse_date(raw['created_at']), 'updated_at': iso8601.parse_date(raw['updated_at']), 'fetched_at': rdb.now(), 'author_id': raw['user']['id'], 'author_login': raw['user']['login'], 'files': [], } for gistfile in raw['files'].values(): format = RENDERABLE.get(gistfile['language'], None) if format is None: continue output = None if format is FORMAT_MD: payload = { 'mode': 'gfm', 'text': gistfile['content'], } req_render = requests.post('https://api.github.com/markdown', params=GITHUB_AUTH_PARAMS, data=unicode(json.dumps(payload))) if req_render.status_code != 200: logger.warn('Render {} file {} failed: {}'.format( id, gistfile['filename'], req_render.status_code)) continue else: output = smartypants.smartypants(req_render.text) if format is FORMAT_RST: rendered = render_rst(gistfile['content'], writer_name='html')['fragment'] output = smartypants.smartypants(rendered) if output is not None: gistfile['rendered'] = output gist['files'].append(gistfile) rdb.table('gists').insert(gist, upsert=True).run(request.rdbconn) return gist
def render_gist(request, id, raw): """Render a raw gist and store it""" gist = { 'id': raw['id'], 'html_url': raw['html_url'], 'public': raw['public'], 'description': raw['description'], 'created_at': iso8601.parse_date(raw['created_at']), 'updated_at': iso8601.parse_date(raw['updated_at']), 'fetched_at': rdb.now(), 'author_id': raw['user']['id'], 'author_login': raw['user']['login'], 'files': [], } for gistfile in raw['files'].values(): format = RENDERABLE.get(gistfile['language'], None) if format is None: continue output = None if format is FORMAT_MD: payload = { 'mode': 'gfm', 'text': gistfile['content'], } req_render = requests.post('https://api.github.com/markdown', params=GITHUB_AUTH_PARAMS, data=unicode(json.dumps(payload))) if req_render.status_code != 200: logger.warn('Render {} file {} failed: {}'.format(id, gistfile['filename'], req_render.status_code)) continue else: output = smartypants.smartypants(req_render.text) if format is FORMAT_RST: rendered = render_rst(gistfile['content'], writer_name='html')['fragment'] output = smartypants.smartypants(rendered) if output is not None: gistfile['rendered'] = output gist['files'].append(gistfile) rdb.table('gists').insert(gist, upsert=True).run(request.rdbconn) return gist
def fetch_and_render(id): """Fetch and render a post from the Github API""" req_gist = requests.get('https://api.github.com/gists/{}'.format(id), params=AUTH_PARAMS) if req_gist.status_code != 200: app.logger.warning('Fetch {} failed: {}'.format(id, r.status_code)) raise GistFetchError() try: raw = req_gist.json() except ValueError: app.logger.error( 'Fetch {} failed: unable to decode JSON response'.format(id)) raise GistFetchError() user = {} for prop in ['id', 'login', 'avatar_url', 'html_url', 'type']: user[prop] = raw['user'][prop] user['fetched_at'] = r.now() r.table('users').insert(user, upsert=True).run(g.rethink) gist = { 'id': raw['id'], 'html_url': raw['html_url'], 'public': raw['public'], 'description': raw['description'], 'created_at': iso8601.parse_date(raw['created_at']), 'updated_at': iso8601.parse_date(raw['updated_at']), 'author_id': user['id'], 'author_login': user['login'], 'files': [], } for gistfile in raw['files'].values(): format = RENDERABLE.get(gistfile['language'], None) if format is None: continue output = None if format is FORMAT_MD: payload = { 'mode': 'gfm', 'text': gistfile['content'], } req_render = requests.post('https://api.github.com/markdown', params=AUTH_PARAMS, data=unicode(json.dumps(payload))) if req_render.status_code != 200: app.logger.warn('Render {} file {} failed: {}'.format( id, gistfile['filename'], req_render.status_code)) continue else: output = smartypants.smartypants(req_render.text) if format is FORMAT_RST: rendered = render_rst(gistfile['content'], writer_name='html')['fragment'] output = smartypants.smartypants(rendered) if output is not None: gistfile['rendered'] = output gist['files'].append(gistfile) r.table('gists').insert(gist, upsert=True).run(g.rethink) return user, gist
def fetch_and_render(id): """Fetch and render a post from the Github API""" req_gist = requests.get('https://api.github.com/gists/{}'.format(id), params=AUTH_PARAMS) if req_gist.status_code != 200: app.logger.warning('Fetch {} failed: {}'.format(id, r.status_code)) raise GistFetchError() try: raw = req_gist.json() except ValueError: app.logger.error('Fetch {} failed: unable to decode JSON response'.format(id)) raise GistFetchError() user = {} for prop in ['id', 'login', 'avatar_url', 'html_url', 'type']: user[prop] = raw['user'][prop] user['fetched_at'] = r.now() r.table('users').insert(user, upsert=True).run(g.rethink) gist = { 'id': raw['id'], 'html_url': raw['html_url'], 'public': raw['public'], 'description': raw['description'], 'created_at': iso8601.parse_date(raw['created_at']), 'updated_at': iso8601.parse_date(raw['updated_at']), 'author_id': user['id'], 'author_login': user['login'], 'files': [], } for gistfile in raw['files'].values(): format = RENDERABLE.get(gistfile['language'], None) if format is None: continue output = None if format is FORMAT_MD: payload = { 'mode': 'gfm', 'text': gistfile['content'], } req_render = requests.post('https://api.github.com/markdown', params=AUTH_PARAMS, data=unicode(json.dumps(payload))) if req_render.status_code != 200: app.logger.warn('Render {} file {} failed: {}'.format(id, gistfile['filename'], req_render.status_code)) continue else: output = smartypants.smartypants(req_render.text) if format is FORMAT_RST: rendered = render_rst(gistfile['content'], writer_name='html')['fragment'] output = smartypants.smartypants(rendered) if output is not None: gistfile['rendered'] = output gist['files'].append(gistfile) r.table('gists').insert(gist, upsert=True).run(g.rethink) return user, gist
def rstToHTML(rst): overrides = {'output_encoding': 'unicode', 'input_encoding': 'unicode'} return render_rst(rst.decode("utf-8"), writer_name="html", settings_overrides=overrides)