--- fpaste.orig 2014-01-23 16:32:30.722416350 +1100
+++ fpaste 2014-01-23 17:20:19.905213882 +1100
@@ -64,9 +64,16 @@
else:
return False
-def get_shortened_url(long_url):
+def get_shortened_url(long_url, password):
"""Get shortened URL from paste data"""
- req = urllib2.Request(url=long_url+'/', data='mode=json')
+
+ # NOTE: this uses password, not paste_password
+ if password:
+ params = urllib.urlencode({'mode':'json', 'password': password})
+ else:
+ params = 'mode=json'
+
+ req = urllib2.Request(url=long_url+'/', data=params)
try:
f = urllib2.urlopen(req)
except urllib2.URLError:
@@ -87,12 +94,15 @@
# if sent data exceeds maxlength, server dies without error returned, so, we'll truncate the input here,
# until the server decides to truncate instead of die
author = options.nick
- if len(title) > 120: # limits from maxlength attr of fpaste.org form
- title = title[0:120-3] + "..."
- if len(author) > 30:
- author = author[0:30-3] + "..."
+ if len(author) > 50:
+ author = author[0:50-3] + "..."
- params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, 'paste_private': options.make_private, 'paste_expire': options.expires, 'api_submit': 'true', 'mode': 'json'})
+ params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text,
+ 'paste_private': options.make_private,
+ 'paste_expire': options.expires,
+ 'paste_password': options.password,
+ 'paste_user': author,
+ 'api_submit': 'true', 'mode': 'json'})
pasteSizeKiB = len(params)/1024.0
if pasteSizeKiB >= 512: # 512KiB appears to be the current hard limit (20110404); old limit was 16MiB
@@ -133,11 +143,11 @@
else:
url = "{0}{1}".format(options.url, id)
- short_url = get_shortened_url(url)
+ short_url = get_shortened_url(url, options.password)
if short_url:
return [url, short_url]
else:
- return [url, url]
+ return [url, False]
# url = f.geturl()
# if re.match(FPASTE_URL + '?.+', url):
@@ -481,12 +491,12 @@
# pastebin-specific options first
fpasteOrg_group = OptionGroup(parser, "fpaste.org Options")
- fpasteOrg_group.add_option('-n', dest='nick', help='your nickname; default is "%default"', metavar='"NICKNAME"')
+ fpasteOrg_group.add_option('-n', dest='nick', help='your nickname; default is "%default";', metavar='"NICKNAME"')
fpasteOrg_group.add_option('-l', dest='lang', help='language of content for syntax highlighting; default is "%default"; use "list" to show all ' + str(len(validSyntaxOpts)) + ' supported langs', metavar='"LANGUAGE"')
fpasteOrg_group.add_option('-x', dest='expires', help='time before paste is removed; default is %default seconds; valid options: ' + ', '.join(validExpiresOpts), metavar='EXPIRES')
- #fpasteOrg_group.add_option('-P', dest='paste_private', help='make paste private; default is %default', + ', '.join(validPrivateOpts), metavar='"PRIVATE"')
fpasteOrg_group.add_option('-P', '--private', help='make paste private; default is %default; valid options: ' + ', '.join(validPrivateOpts), dest='make_private', metavar='"PRIVATE"')
fpasteOrg_group.add_option('-U', '--URL', help='URL of fpaste server; default is %default', dest='url', metavar='"FPASTE URL"')
+ fpasteOrg_group.add_option('-d', '--password', help='password for paste; default is %default', dest='password', metavar='"PASSWORD"')
parser.add_option_group(fpasteOrg_group)
# other options
@@ -501,8 +511,15 @@
fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False)
parser.add_option_group(fpasteProg_group)
- parser.set_defaults(nick='', lang='text', make_private='yes',
- expires='2592000', selection='primary', url=FPASTE_URL )
+# Let default be anonymous.
+# p = subprocess.Popen('whoami', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+# (out, err) = p.communicate ()
+# if p.returncode == 0 and out:
+# user = out[0:-1]
+# else:
+# print >> sys.stderr, "WARNING Could not run whoami. Posting anonymously."
+
+ parser.set_defaults(nick='', lang='text', make_private='yes', expires='2592000', selection='primary', password='', url=FPASTE_URL )
(options, args) = parser.parse_args()
# Check for trailing slash
@@ -610,7 +627,8 @@
#parser.error("'xsel' failure. this usually means you're not running X")
print >> sys.stderr, "WARNING: URL not saved to clipboard"
- if url == short_url:
+ if not short_url:
+ print >> sys.stderr, "WARNING: Could not shorten URL"
print url
else:
print short_url + " -> " + url