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