1 /*jslint devel: true, browser: true, confusion: true, sloppy: true, maxerr: 50, indent: 4 */
2 /*globals io, $, kiwi, kiwi_server */
9 user_prefixes
: ['~', '&', '@', '+'],
13 start: function (kiwi_server
) {
14 if (typeof kiwi_server
!== 'undefined') {
15 kiwi
.gateway
.kiwi_server
= kiwi_server
;
19 connect: function (host
, port
, ssl
, password
, callback
) {
20 if (typeof kiwi
.gateway
.kiwi_server
!== 'undefined') {
21 kiwi
.gateway
.socket
= io
.connect(kiwi_server
, {
22 'try multiple transports': true,
23 'connect timeout': 3000,
24 'max reconnection attempts': 7,
25 'reconnection delay': 2000
27 kiwi
.gateway
.socket
.on('connect_failed', function (reason
) {
28 // TODO: When does this even actually get fired? I can't find a case! ~Darren
29 console
.debug('Unable to connect Socket.IO', reason
);
30 console
.log("kiwi.gateway.socket.on('connect_failed')");
31 //kiwi.front.tabviews.server.addMsg(null, ' ', 'Unable to connect to Kiwi IRC.\n' + reason, 'error');
32 kiwi
.gateway
.socket
.disconnect();
33 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: reason
});
34 kiwi
.gateway
.sendData = function () {};
35 }).on('error', function (e
) {
36 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: e
});
37 console
.log("kiwi.gateway.socket.on('error')");
41 kiwi
.gateway
.socket
.on('connecting', function (transport_type
) {
42 console
.log("kiwi.gateway.socket.on('connecting')");
43 $(kiwi
.gateway
).trigger("connecting");
46 kiwi
.gateway
.socket
.on('connect', function () {
47 // This is also called when reconnected..
48 kiwi
.gateway
.sendData = function (data
, callback
) {
49 kiwi
.gateway
.socket
.emit('message', {sid
: this.session_id
, data
: $.toJSON(data
)}, callback
);
52 kiwi
.gateway
.socket
.emit('irc connect', kiwi
.gateway
.nick
, host
, port
, ssl
, password
, callback
);
53 console
.log("kiwi.gateway.socket.on('connect')");
55 kiwi
.gateway
.socket
.on('too_many_connections', function () {
56 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: 'too_many_connections'});
59 kiwi
.gateway
.socket
.on('message', kiwi
.gateway
.parse
);
60 kiwi
.gateway
.socket
.on('disconnect', function () {
61 // Teardown procedure here
62 $(kiwi
.gateway
).trigger("ondisconnect", {});
63 console
.log("kiwi.gateway.socket.on('disconnect')");
65 kiwi
.gateway
.socket
.on('close', function () {
66 console
.log("kiwi.gateway.socket.on('close')");
69 kiwi
.gateway
.socket
.on('reconnecting', function (reconnectionDelay
, reconnectionAttempts
) {
70 console
.log("kiwi.gateway.socket.on('reconnecting')");
71 $(kiwi
.gateway
).trigger("onreconnecting", {delay
: reconnectionDelay
, attempts
: reconnectionAttempts
});
73 kiwi
.gateway
.socket
.on('reconnect_failed', function () {
74 console
.log("kiwi.gateway.socket.on('reconnect_failed')");
98 parse: function (item
) {
99 if (item
.event
!== undefined) {
100 $(kiwi
.gateway
).trigger("on" + item
.event
, item
);
102 switch (item
.event
) {
104 $.each(item
.options
, function (name
, value
) {
107 kiwi
.gateway
.channel_prefix
= value
.charAt(0);
110 kiwi
.gateway
.network_name
= value
;
113 kiwi
.gateway
.user_prefixes
= value
;
120 if (kiwi
.gateway
.onSync
&& kiwi
.gateway
.syncing
) {
121 kiwi
.gateway
.syncing
= false;
122 kiwi
.gateway
.onSync(item
);
127 $(kiwi
.gateway
).trigger('kiwi.' + item
.namespace, item
.data
);
133 sendData: function () {},
135 privmsg: function (target
, msg
, callback
) {
144 kiwi
.gateway
.sendData(data
, callback
);
147 notice: function (target
, msg
, callback
) {
156 kiwi
.gateway
.sendData(data
, callback
);
159 ctcp: function (request
, type
, target
, params
, callback
) {
170 kiwi
.gateway
.sendData(data
, callback
);
173 join: function (channel
, key
, callback
) {
182 kiwi
.gateway
.sendData(data
, callback
);
185 part: function (channel
, callback
) {
193 kiwi
.gateway
.sendData(data
, callback
);
196 topic: function (channel
, new_topic
, callback
) {
205 kiwi
.gateway
.sendData(data
, callback
);
208 kick: function (channel
, nick
, reason
, callback
) {
218 kiwi
.gateway
.sendData(data
, callback
);
221 quit: function (msg
, callback
) {
230 kiwi
.gateway
.sendData(data
, callback
);
233 raw: function (data
, callback
) {
241 kiwi
.gateway
.sendData(data
, callback
);
244 nick: function (new_nick
, callback
) {
252 kiwi
.gateway
.sendData(data
, callback
);
255 kiwi: function (target
, data
, callback
) {
264 kiwi
.gateway
.sendData(data
, callback
);