diff options
author | mattn | 2008-05-08 00:19:26 +0000 |
---|---|---|
committer | mattn | 2008-05-08 00:19:26 +0000 |
commit | 57659546f8cd6cd11cf42179965fc268ce491909 (patch) | |
tree | 71369f7cbfe63da87e871f87af95fa92360ee0e0 /wassr.js | |
parent | b38fd556bcc3405ed28fa876b2084a1354dde37c (diff) | |
download | vimperator-plugins-57659546f8cd6cd11cf42179965fc268ce491909.tar.bz2 |
added wassr plugin.
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@11264 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'wassr.js')
-rw-r--r-- | wassr.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/wassr.js b/wassr.js new file mode 100644 index 0000000..3f523e1 --- /dev/null +++ b/wassr.js @@ -0,0 +1,78 @@ +// Vimperator plugin: "Update Wassr"
+// Last Change: 08-May-2008. Jan 2008
+// License: Creative Commons
+// Maintainer: mattn <mattn.jp@gmail.com> - http://mattn.kaoriya.net/
+// Based On: twitter.js by Trapezoid
+//
+// The script allows you to update Wassr status from Vimperator 0.6.*.
+
+(function(){
+ var passwordManager = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager);
+ function sayWassr(username, password, stat){
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "http://api.wassr.jp/statuses/update.json", false, username, password);
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ xhr.send("status=" + encodeURIComponent(stat));
+ }
+ function sprintf(format){
+ var i = 1, re = /%s/, result = "" + format;
+ while (re.test(result) && i < arguments.length) result = result.replace(re, arguments[i++]);
+ return result;
+ }
+ function showFollowersStatus(username, password){
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", "http://api.wassr.jp/statuses/friends_timeline.json", false, username, password);
+ // for debug
+ //xhr.open("GET", "http://api.wassr.jp/statuses/user_timeline/otsune.json", false, username, password);
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ xhr.send(null);
+ var statuses = window.eval(xhr.responseText);
+
+ var html = <style type="text/css"><![CDATA[
+ span.wassr.entry-content a { text-decoration: none; }
+ img.wassr.photo { border; 0px; width: 16px; height: 16px; vertical-align: baseline; }
+ ]]></style>.toSource()
+ .replace(/(?:\r?\n|\r)[ \t]*/g, " ") +
+ statuses.map(function(status)
+ <>
+ <img src={'http://wassr.jp/user/' + status.user_login_id + '/profile_img.png.32'}
+ alt={status.user.screen_name}
+ title={status.user.screen_name}
+ class="wassr photo"/>
+ <strong>{status.user_login_id}‬</strong>
+ </>.toSource()
+ .replace(/(?:\r?\n|\r)[ \t]*/g, " ") +
+ sprintf(': <span class="wassr entry-content">%s‬</span>', status.text))
+ .join("<br/>");
+
+ //liberator.log(html);
+ liberator.echo(html, true);
+ }
+ liberator.commands.addUserCommand(["wassr"], "Change wassr status",
+ function(arg, special){
+ var password;
+ var username;
+ try {
+ var logins = passwordManager.findLogins({}, "http://wassr.jp", "http://wassr.jp", null);
+ if (logins.length)
+ [username, password] = [logins[0].username, logins[0].password];
+ else
+ throw "Wassr: account not found";
+ }
+ catch (ex){
+ liberator.echoerr(ex);
+ }
+
+ if (special){
+ arg = arg.replace(/%URL%/g, liberator.buffer.URL)
+ .replace(/%TITLE%/g, liberator.buffer.title);
+ }
+
+ if (!arg || arg.length == 0)
+ showFollowersStatus(username, password);
+ else
+ sayWassr(username, password, arg);
+ },
+ { });
+})();
+// vim:sw=4 ts=4 et:
|