Skip to content

Instantly share code, notes, and snippets.

@driazati
Created February 4, 2020 19:45
Show Gist options
  • Save driazati/310a8c3be1bcc7008930df96e2a9bc20 to your computer and use it in GitHub Desktop.
Save driazati/310a8c3be1bcc7008930df96e2a9bc20 to your computer and use it in GitHub Desktop.
import fileinput
import configparser
import os
import requests
class col:
HEADER = "\033[95m"
BLUE = "\033[94m"
GREEN = "\033[92m"
YELLOW = "\033[93m"
RED = "\033[91m"
RESET = "\033[0m"
BOLD = "\033[1m"
UNDERLINE = "\033[4m"
config = {
"quiet": False
}
ghstackrc = configparser.ConfigParser()
ghstackrc.read(os.path.expanduser('~/.ghstackrc'))
config['github_oauth'] = ghstackrc['ghstack']['github_oauth']
username = ghstackrc['ghstack']['github_username']
def log(*args, **kwargs):
if not config['quiet']:
print(*args, **kwargs)
def color(color, text):
return col.BOLD + color + str(text) + col.RESET
def github(method, path, payload=None, note=""):
if payload is None:
payload = {}
headers = {
"Content-Type": "application/json",
"Host": "api.github.com",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.9",
}
if config['github_oauth'] is not None:
headers["Authorization"] = "token " + config['github_oauth']
url = "https://api.github.com/" + path
log(color(col.GREEN, "{} {}".format(method, url)), "{}{}{}".format(col.BLUE, note, col.RESET))
r = getattr(requests, method)(
url,
json=payload,
headers=headers,
)
return r.json()
stdin = [line for line in fileinput.input()]
stdin = ''.join(stdin)
payload = {
"files": {
"main.py": {
"content": stdin
}
},
# "description": "auto-created gist",
"public": True
}
url = 'users/{}/gists'.format(username)
url = 'gists'
x = github('post', url, payload=payload, note='(uploading content from stdin)')
if 'html_url' not in x:
raise RuntimeError("Error creating gist")
print(x['html_url'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment