f650887d43a50037b74ac0c6f555895e271d5178
[elisp/riece.git] / lisp / riece-twitter.el
1 (require 'riece-message)
2
3 (defvar riece-twitter-credential nil)
4
5 (defun riece-twitter-message-filter (message)
6   (if (and (riece-message-own-p message)
7            (eq 'action (riece-message-type message)))
8       (start-process
9        "curl" nil "curl"
10        "-H" "X-Twitter-Client: Riece"
11        "-H" (concat "X-Twitter-Client-Version: " riece-version-number)
12        "-H" "X-Twitter-Client-URL: http://riece.nongnu.org/twitter.xml"
13        "-u" riece-twitter-credential
14        "-d" (concat "status="
15                     (riece-twitter-escape-string
16                      (encode-coding-string (riece-message-text message)
17                                            'utf-8)))
18        "-s"
19        "http://twitter.com/statuses/update.json"))
20   message)
21
22 (defun riece-twitter-escape-string (string)
23   (let ((index 0))
24     (while (string-match "[^0-9A-Za-z\-\._~:/?@!\$'()*,]" string index)
25       (setq string (replace-match
26                     (format "%%%02X" (aref string (match-beginning 0)))
27                     t t string)
28             index (+ 3 (match-beginning 0))))
29     string))
30
31 (defun riece-twitter-insinuate ()
32   (add-hook 'riece-message-filter-functions 'riece-twitter-message-filter))
33
34 (defun riece-twitter-uninstall ()
35   (remove-hook 'riece-message-filter-functions 'riece-twitter-message-filter))
36
37 (provide 'riece-twitter)
38
39 ;;; riece-twitter.el ends here