$(gateway).bind("onpart", front.onPart);
$(gateway).bind("onkick", front.onKick);
$(gateway).bind("onquit", front.onQuit);
+ $(gateway).bind("onmode", front.onMode);
$(gateway).bind("onwhois", front.onWhois);
$(gateway).bind("onsync", front.onSync);
$(gateway).bind("onchannel_redirect", front.onChannelRedirect);
$(gateway).bind("onctcp_request", front.onCTCPRequest);
$(gateway).bind("onctcp_response", front.onCTCPResponse);
$(gateway).bind("onirc_error", front.onIRCError);
+ $(gateway).bind("onkiwi", front.onKiwi);
this.buffer = [];
front.joinChannel($(this).text());
return false;
});
+
+
+
+ for(var i in plugins) plugs.loadPlugin(plugins[i]);
},
//gateway.raw('TOPIC ' + front.cur_channel.name + ' :' + msg.split(' ', 2)[1]);
}
break;
+
+ case '/kiwi':
+ gateway.kiwi(front.cur_channel.name, msg.substring(6));
+ break;
+
default:
//front.cur_channel.addMsg(null, ' ', '--> Invalid command: '+parts[0].substring(1));
gateway.raw(msg.substring(1));
onCTCPResponse: function (e, data) {
},
+
+ onKiwi: function (e, data) {
+ //console.log(data);
+ },
onConnect: function (e, data) {
if (data.connected) {
front.cur_channel.addMsg(null, data.nick, 'idle for ' + data.idle + ' seconds', 'whois');
}
},
+ onMode: function (e, data) {
+ console.log(data);
+ },
onUserList: function (e, data) {
var ul, nick, mode;
if (front.tabviews[data.channel.toLowerCase()] === undefined) {
console.log(e);
});
gateway.socket.on('connect', function () {
- console.log('connect event');
gateway.sendData = function (data, callback) {
gateway.socket.emit('message', {sid: this.session_id, data: $.toJSON(data)}, callback);
};
parse: function (item) {
if (item.event !== undefined) {
$(gateway).trigger("on" + item.event, item);
-
+
switch (item.event) {
case 'options':
$.each(item.options, function (name, value) {
gateway.onSync(item);
}
break;
+
+ case 'kiwi':
+ $(gateway).trigger('kiwi.' + item.namespace, item.data);
+ break;
}
}
},
},
+ kiwi: function (s_target, s_data, callback) {
+ var data = {
+ method: 'kiwi',
+ args: {
+ target: s_target,
+ data: s_data
+ }
+ };
+ gateway.sendData(data, callback);
+ },
+
+
notice: function (s_target, s_msg, callback) {
var data = {
method: 'notice',
}
return false;
}
+ },
+
+ {
+ name: "kiwitest",
+ oninit: function(event, opts) {
+ console.log('registering namespace');
+ $(gateway).bind("kiwi.lol.browser", function(e, data){
+ console.log('YAY kiwitest');
+ console.log(data);
+ });
+ }
}
];
};
-for(var i in plugins) plugs.loadPlugin(plugins[i]);
-
-
// It's a CTCP request
if (msg.trailing.substr(1, 6) === 'ACTION') {
websocket.sendClientEvent('action', {nick: msg.nick, ident: msg.ident, hostname: msg.hostname, channel: msg.params.trim(), msg: msg.trailing.substr(7, msg.trailing.length - 2)});
+ } else if (msg.trailing.substr(1, 4) === 'KIWI') {
+ var tmp = msg.trailing.substr(6, msg.trailing.length - 2);
+ var namespace = tmp.split(' ', 1)[0];
+ websocket.sendClientEvent('kiwi', {namespace: namespace, data: tmp.substr(namespace.length+1)});
+
} else if (msg.trailing.substr(1, 7) === 'VERSION') {
ircSocket.write('NOTICE ' + msg.nick + ' :' + String.fromCharCode(1) + 'VERSION KiwiIRC' + String.fromCharCode(1) + '\r\n');
} else {
websocket.sendServerLine = function (data, eol) {
eol = (typeof eol === 'undefined') ? '\r\n' : eol;
- websocket.ircSocket.write(data + eol);
+
+ try {
+ websocket.ircSocket.write(data + eol);
+ } catch (e) { }
};
websocket.on('irc connect', kiwi.websocketIRCConnect);
websocket.sendServerLine('PRIVMSG ' + args.target + ' :\001ACTION ' + args.msg + '\001');
}
break;
+
+ case 'kiwi':
+ if ((args.target) && (args.data)) {
+ websocket.sendServerLine('PRIVMSG ' + args.target + ' :\001KIWI ' + args.data + '\001');
+ }
+ break;
+
case 'raw':
websocket.sendServerLine(args.data);
break;