diff options
author | from_kyushu | 2009-06-20 18:42:13 +0000 |
---|---|---|
committer | from_kyushu | 2009-06-20 18:42:13 +0000 |
commit | 1a981233e12a1a2c5c2daacbff1736146e6842b4 (patch) | |
tree | 36df0dd0ef59ed063f9a7a22c1df2b1459bd313d | |
parent | 2a9bf130da7d275eacf62af87b24292878119767 (diff) | |
download | vimperator-plugins-1a981233e12a1a2c5c2daacbff1736146e6842b4.tar.bz2 |
add retweet.js
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@34069 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r-- | retweet.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/retweet.js b/retweet.js new file mode 100644 index 0000000..839bcd8 --- /dev/null +++ b/retweet.js @@ -0,0 +1,108 @@ +// PLUGIN_INFO//{{{ +var PLUGIN_INFO = +<VimperatorPlugin> + <name>retweet</name> + <description>ReTweet This Page.</description> + <description lang="ja">開いているTweetをReTweetします。</description> + <author mail="from.kyushu.island@gmail.com" homepage="http://iddy.jp/profile/from_kyushu">from_kyushu</author> + <version>0.1</version> + <license>GPL</license> + <minVersion>1.2</minVersion> + <maxVersion>2.1</maxVersion> + <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/retweet.js</updateURL> + <require type="plugin">_libly.js</require> + <detail><![CDATA[ + +== Command == +Usage: + :rtt + ReTweet This Post. + + ]]></detail> +</VimperatorPlugin>; +//}}} +// +( + function() + { + var password; + var username; + var passwordManager = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager); + var $U = liberator.plugins.libly.$U; + + function getBody() + { + var body = $U.getFirstNodeFromXPath("//span[@class='entry-content']").innerHTML; + var tags = body.match(/<.*?>/g); + for(tag in tags) + { + body = body.replace(tags[tag],""); + } + return body; + } + + function getUserName() + { + return $U.getFirstNodeFromXPath("//div[@class='screen-name']/a").innerHTML; + } + + function getShortenUrl(longUrl) + { + var xhr = new XMLHttpRequest(); + var req = "http://bit.ly/api?url=" + longUrl; + xhr.open('GET',req, false); + xhr.send(null); + if (xhr.status != 200) + { + return longUrl; + } + return xhr.responseText; + } + + function sendTwitter(url,name,body) + { + var xhr = new XMLHttpRequest(); + var statusText = "RT @" + name + " [" + url +"]: " + body; + xhr.open("POST", "http://twitter.com/statuses/update.json", false, username, password); + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.send("status=" + encodeURIComponent(statusText) + "&source=Vimperator"); + + liberator.echo("[RT] Your post was sent. " ); + } + + commands.addUserCommand( + ['retweet[This]','rtt'], + 'ReTweet This.', + function() + { + try + { + var logins = passwordManager.findLogins({}, "http://twitter.com","https://twitter.com",null); + var body = getBody(); + var name = getUserName(); + var url = getShortenUrl(buffer.URL); + if(logins.length) + { + username = logins[0].username; + password = logins[0].password; + sendTwitter(url,name,body); + } + else if (liberator.globalVariables.twitter_username && liberator.globalVariables.twitter_password) + { + username = liberator.globalVariables.twitter_username; + password = liberator.globalVariables.twitter_password; + sendTwitter(url,name,body); + } + else + { + throw "Accont not found"; + } + } + catch(e) + { + liberator.echoerr(e); + } + } + ); + } +)(); |