Described 4.0.0 changes.
[elisp/riece.git] / lisp / riece-twitter.el
index a581ddc..c70dfe9 100644 (file)
@@ -1,18 +1,70 @@
-(defvar riece-twitter-credential nil)
+;;; riece-twitter.el --- post your status to Twitter
+;; Copyright (C) 2007 Daiki Ueno
+
+;; Author: Daiki Ueno <ueno@unixuser.org>
+;; Keywords: IRC, riece
+
+;; This file is part of Riece.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; NOTE: This is an add-on module for Riece.
+
+;;; Code:
+
+(require 'riece-message)
+
+(defgroup riece-twitter nil
+  "Post your status to Twitter"
+  :group 'riece)
+  
+(defcustom riece-twitter-credential nil
+  "Your credential used to login to Twitter."
+  :group 'riece-twitter
+  :type 'string)
+
+(defcustom riece-twitter-cache-credential nil
+  "If non-nil, cache your credential on Twitter."
+  :group 'riece-twitter
+  :type 'boolean)
 
 (defun riece-twitter-message-filter (message)
-  (if (and (riece-message-own-p message)
-          (eq 'action (riece-message-type message)))
-      (start-process
-       "curl" nil "curl"
-       "-H" "X-Twitter-Client: Riece"
-       "-H" (concat "X-Twitter-Client-Version: " riece-version-number)
-       "-H" "X-Twitter-Client-URL: http://riece.nongnu.org/twitter.xml"
-       "-u" riece-twitter-credential
-       "-d" (concat "status="
-                   (riece-twitter-escape-string (encode-coding-string (riece-message-text message) 'utf-8)))
-       "-s"
-       "http://twitter.com/statuses/update.json"))
+  (let ((credential
+        (or riece-twitter-credential
+            (concat (read-string "Twitter username: ") ":"
+                    (read-passwd "Twitter password: ")))))
+    (if (and riece-twitter-cache-credential
+            (not (eq credential riece-twitter-credential)))
+       (setq riece-twitter-credential credential))
+    (if (and (riece-message-own-p message)
+            (eq 'action (riece-message-type message)))
+       (start-process
+        "curl" nil "curl"
+        "-H" "X-Twitter-Client: Riece"
+        "-H" (concat "X-Twitter-Client-Version: " riece-version-number)
+        "-H" "X-Twitter-Client-URL: http://riece.nongnu.org/twitter.xml"
+        "-u" credential
+        "-d" (concat "status="
+                     (riece-twitter-escape-string
+                      (encode-coding-string (riece-message-text message)
+                                            'utf-8)))
+        "-s"
+        "http://twitter.com/statuses/update.json")))
   message)
 
 (defun riece-twitter-escape-string (string)