1 /*jslint devel: true, browser: true, confusion: true, sloppy: true, maxerr: 50, indent: 4 */
2 /*globals io, $, kiwi, kiwi_server */
12 user_prefixes
: ['~', '&', '@', '+'],
16 start: function (kiwi_server
) {
17 if (typeof kiwi_server
!== 'undefined') {
18 kiwi
.gateway
.kiwi_server
= kiwi_server
;
22 connect: function (host
, port
, ssl
, callback
) {
23 if (typeof kiwi
.gateway
.kiwi_server
!== 'undefined') {
24 kiwi
.gateway
.socket
= io
.connect(kiwi_server
, {'max reconnection attempts': 3});
25 kiwi
.gateway
.socket
.of('/kiwi').on('connect_failed', function (reason
) {
26 // TODO: When does this even actually get fired? I can't find a case! ~Darren
27 console
.debug('Unable to connect Socket.IO', reason
);
28 //kiwi.front.tabviews.server.addMsg(null, ' ', 'Unable to connect to Kiwi IRC.\n' + reason, 'error');
29 kiwi
.gateway
.socket
.disconnect();
30 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: reason
});
31 kiwi
.gateway
.sendData = function () {};
32 }).on('error', function (e
) {
33 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: e
});
37 kiwi
.gateway
.socket
.on('connect', function () {
38 kiwi
.gateway
.sendData = function (data
, callback
) {
39 kiwi
.gateway
.socket
.emit('message', {sid
: this.session_id
, data
: $.toJSON(data
)}, callback
);
41 kiwi
.gateway
.socket
.on('message', kiwi
.gateway
.parse
);
42 kiwi
.gateway
.socket
.on('disconnect', function () {
43 // Teardown procedure here
44 $(kiwi
.gateway
).trigger("ondisconnect", {});
46 kiwi
.gateway
.socket
.emit('irc connect', kiwi
.gateway
.nick
, host
, port
, ssl
, callback
);
48 kiwi
.gateway
.socket
.on('too_many_connections', function () {
49 $(kiwi
.gateway
).trigger("onconnect_fail", {reason
: 'too_many_connections'});
73 parse: function (item
) {
74 if (item
.event
!== undefined) {
75 $(kiwi
.gateway
).trigger("on" + item
.event
, item
);
79 $.each(item
.options
, function (name
, value
) {
82 kiwi
.gateway
.channel_prefix
= value
.charAt(0);
85 kiwi
.gateway
.network_name
= value
;
88 kiwi
.gateway
.user_prefixes
= value
;
95 if (kiwi
.gateway
.onSync
&& kiwi
.gateway
.syncing
) {
96 kiwi
.gateway
.syncing
= false;
97 kiwi
.gateway
.onSync(item
);
102 $(kiwi
.gateway
).trigger('kiwi.' + item
.namespace, item
.data
);
108 sendData: function () {},
110 sync: function (callback
) {
111 if (this.session_id
=== null) {
120 kiwi
.gateway
.syncing
= true;
121 kiwi
.gateway
.sendData(data
, callback
);
124 debug: function (callback
) {
130 kiwi
.gateway
.sendData(data
, callback
);
134 msg: function (s_target
, s_msg
, callback
) {
143 kiwi
.gateway
.sendData(data
, callback
);
146 action: function (s_target
, s_msg
, callback
) {
155 kiwi
.gateway
.sendData(data
, callback
);
159 kiwi: function (s_target
, s_data
, callback
) {
167 kiwi
.gateway
.sendData(data
, callback
);
171 notice: function (s_target
, s_msg
, callback
) {
180 kiwi
.gateway
.sendData(data
, callback
);
184 join: function (s_channel
, callback
) {
192 kiwi
.gateway
.sendData(data
, callback
);
195 setTopic: function (s_channel
, new_topic
, callback
) {
204 kiwi
.gateway
.sendData(data
, callback
);
208 raw: function (v_data
, callback
) {
216 kiwi
.gateway
.sendData(data
, callback
);
220 quit: function (msg
, callback
) {
230 kiwi
.gateway
.sendData(data
, callback
);