aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorteramako2011-03-26 17:30:32 +0900
committerteramako2011-03-26 17:30:32 +0900
commit862cfd0fada1de04879af1f06475151915915354 (patch)
treedc613b438c912423544ca8944ab8c21653deed5b
parent28af28618d4dc7725d87acb07d51d7d6fd7097ab (diff)
parent3837a15173e93156940c278ac40763a6a26cca63 (diff)
downloadvimperator-plugins-862cfd0fada1de04879af1f06475151915915354.tar.bz2
Merge branch 'master' of github.com:vimpr/vimperator-plugins
-rw-r--r--twittperator/sstp.tw89
1 files changed, 89 insertions, 0 deletions
diff --git a/twittperator/sstp.tw b/twittperator/sstp.tw
new file mode 100644
index 0000000..d00afa1
--- /dev/null
+++ b/twittperator/sstp.tw
@@ -0,0 +1,89 @@
+/* NEW BSD LICENSE {{{
+Copyright (c) 2011, anekos.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ 3. The names of the authors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+###################################################################################
+# http://sourceforge.jp/projects/opensource/wiki/licenses%2Fnew_BSD_license #
+# に参考になる日本語訳がありますが、有効なのは上記英文となります。 #
+###################################################################################
+
+}}} */
+
+// INFO {{{
+let INFO =
+<>
+ <plugin name="SSTP Sender" version="1.0.0"
+ href="http://vimpr.github.com/"
+ summary="Send tweets to SSTP app."
+ lang="en-US"
+ xmlns="http://vimperator.org/namespaces/liberator">
+ <author email="anekos@snca.net">anekos</author>
+ <license>New BSD License</license>
+ <project name="Vimperator" minVersion="3.0"/>
+ <p>Just install.</p>
+ </plugin>
+</>;
+// }}}
+
+(function () {
+ let socketService =
+ let (stsvc = Components.classes["@mozilla.org/network/socket-transport-service;1"])
+ let (svc = stsvc.getService())
+ svc.QueryInterface(Components.interfaces["nsISocketTransportService"]);
+
+ function talk (name, msg) {
+ let transport = socketService.createTransport(null, 0, '127.0.0.1', 9801, null);
+ let outputStream = transport.openOutputStream(0, 0, 0);
+ let conv = Cc['@mozilla.org/intl/converter-output-stream;1'].
+ createInstance(Ci.nsIConverterOutputStream);
+
+ msg = msg.replace(/\\/g, "\\\\").replace(/[\r\n]+/g, "\\n");
+
+ let buf = [
+ "SEND SSTP/1.1",
+ "Sender: Twittperator",
+ "Charset: UTF-8",
+ "Script: \\h\\s0" + name + "\\n\\n" + msg + "\\e",
+ "Options: nodescript,notranslate",
+ "Charset: UTF-8",
+ "",
+ ].map(function (it) (it + "\r\n")).join('');
+
+ conv.init(outputStream, 'UTF-8', buf.length, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+ conv.writeString(buf);
+
+ outputStream.close();
+ }
+
+ plugins.twittperator.ChirpUserStream.addListener(
+ function (msg, raw)
+ (msg.text && msg.user && msg.user.screen_name && talk(msg.user.screen_name, msg.text))
+ );
+
+})();
+
+// vim:sw=2 ts=2 et si fdm=marker:
+