gfmhtml/render.py (24 lines of code) (raw):
#!/usr/bin/env python3
#
# Test script for using GitHub's REST endpoint for rendering
# GFM (on stdin) into HTML (to stdout).
#
# USAGE:
#
# A Personal Access Token (PAT) is needed. Generate one at
# https://github.com/settings/tokens?type=beta ... set an
# expiration and read-only for all public repositories. No
# fine-grained permissions are needed.
#
# Save the PAT somewhere safe.
#
# Put the PAT into the environment variable GITHUB_TOKEN:
#
# $ read GITHUB_TOKEN
# <paste>
#
# Using read will ensure the PAT does not appear in your
# shell history.
#
# $ ./render.py < /some/file.md > /some/where.html
#
import os
import sys
import json
import requests
ENDPOINT = 'https://api.github.com/markdown'
API_VERSION = '2022-11-28'
def main():
token = os.environ['GITHUB_TOKEN'] # Fail if missing
markdown = sys.stdin.read()
sys.stdout.write(render(token, markdown))
def render(token, markdown):
headers = {
'Accept': 'application/vnd.github+json',
'Authorization': f'Bearer {token}',
'X-GitHub-Api-Version': API_VERSION,
}
params = {
'text': markdown,
'mode': 'gfm',
#'context': None,
}
r = requests.post(ENDPOINT, headers=headers, json=params)
return r.text
if __name__ == '__main__':
main()