#!/usr/bin/env python import argparse import os.path import requests import sys parser = argparse.ArgumentParser(description='paste a file to paste.fedoraproject.org') parser.add_argument('filename', metavar='file', type=str, nargs='?', help='file to paste; if not specified, read from stdin') parser.add_argument('--language', '-l', dest='language', help='the language to use (default: Text if stdin, autodetect based on extension otherwise)') args = parser.parse_args() if args.filename is None: args.filename = '' f = sys.stdin if args.language is None: args.language = 'text' else: f = open(args.filename, 'r') args.filename = os.path.basename(args.filename) if args.language is None: r = requests.get('https://gist.github.com/detect_language', params={'filename': args.filename}, headers={'Accept': 'application/json'}) language = r.json()['language'] args.language = language.lower() content = f.read() data = { 'paste_data': content, 'paste_lang': args.language, 'paste_private': 'on', 'paste_expire': 2592000, # 30 days in seconds 'paste_submit': 'Paste', } url_base = 'https://paste.fedoraproject.org' r = requests.post(url_base + '/', data=data, allow_redirects=False) try: print url_base + r.headers['location'] except: print r.headers print r.content raise