#!/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
