aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--twittperator/sstp.tw83
1 files changed, 83 insertions, 0 deletions
diff --git a/twittperator/sstp.tw b/twittperator/sstp.tw
new file mode 100644
index 0000000..f89ae1b
--- /dev/null
+++ b/twittperator/sstp.tw
@@ -0,0 +1,83 @@
+/* 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 (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);
+ let buf = [
+ "SEND SSTP/1.1\r\n",
+ "Sender: Twittperator\r\n",
+ "Charset: UTF-8\r\n",
+ "Script: \\h\\s0" + msg + "\\e\r\n",
+ "Options: nodescript,notranslate\r\n",
+ "Charset: UTF-8\r\n",
+ "\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 && talk(msg.text)));
+
+})();
+
+// vim:sw=2 ts=2 et si fdm=marker:
+