Blob Blame History Raw
--- 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