General tidying up!
[KiwiIRC.git] / js / gateway.js
CommitLineData
f4f7781b 1/*jslint browser: true, confusion: true, sloppy: true, maxerr: 50, indent: 4 */
1eaf214f 2/*globals io, $, kiwi_server */
54f4a22e
D
3var gateway = {
4
f4f7781b 5 revision: 16,
54f4a22e 6
f4f7781b
JA
7 nick: 'kiwi',
8 session_id: null,
9 syncing: false,
10 channel_prefix: '#',
11 network_name: '',
a3364605 12 user_prefixes: ['~', '&', '@', '+'],
c984ba1b 13 socket: null,
a3364605 14
1614c0f9 15 start: function (kiwi_server) {
7d1c3ee9
JA
16 if (typeof kiwi_server !== 'undefined') {
17 gateway.socket = io.connect(kiwi_server);
18 gateway.socket.on('connect', function () {
7d1c3ee9
JA
19 gateway.sendData = function (data, callback) {
20 gateway.socket.emit('message', {sid: this.session_id, data: $.toJSON(data)}, callback);
21 };
22 gateway.socket.on('message', gateway.parse);
23 gateway.socket.on('disconnect', function () {
24 // Teardown procedure here
25 $(gateway).trigger("ondisconnect", {});
26 });
f4f7781b 27 });
7d1c3ee9 28 }
f4f7781b 29 },
c984ba1b 30
f4f7781b 31 connect: function (host, port, ssl, callback) {
bad1ea63
JA
32 gateway.socket.emit('irc connect', this.nick, host, port, ssl, callback);
33 },
34
f4f7781b 35 /*
a3364605
JA
36 Events:
37 msg
38 action
39 server_connect
40 options
41 motd
42 notice
43 userlist
44 nick
45 join
46 topic
47 part
48 kick
49 quit
50 whois
51 syncchannel_redirect
52 debug
f4f7781b
JA
53 */
54 parse: function (item) {
a3364605
JA
55 if (item.event !== undefined) {
56 $(gateway).trigger("on" + item.event, item);
57
58 switch (item.event) {
59 case 'options':
60 $.each(item.options, function (name, value) {
61 switch (name) {
62 case 'CHANTYPES':
63 gateway.channel_prefix = value.charAt(0);
64 break;
65 case 'NETWORK':
66 gateway.network_name = value;
67 break;
68 case 'PREFIX':
69 gateway.user_prefixes = value;
70 break;
71 }
72 });
73 break;
74
75 case 'sync':
76 if (gateway.onSync && gateway.syncing) {
77 gateway.syncing = false;
78 gateway.onSync(item);
79 }
80 break;
81 }
82 }
f4f7781b
JA
83 },
84
85 sendData: function () {},
86
87 sync: function (callback) {
a3364605 88 if (this.session_id === null) {
f4f7781b
JA
89 return;
90 }
a3364605
JA
91
92 var data = {
93 method: 'sync',
94 args: {}
95 };
96
97 gateway.syncing = true;
98 gateway.sendData(data, callback);
f4f7781b
JA
99 },
100
101 debug: function (callback) {
a3364605
JA
102 var data = {
103 method: 'debug',
104 args: {}
105 };
f4f7781b 106
a3364605 107 gateway.sendData(data, callback);
f4f7781b
JA
108 },
109
110
111 msg: function (s_target, s_msg, callback) {
a3364605
JA
112 var data = {
113 method: 'msg',
114 args: {
115 target: s_target,
116 msg: s_msg
117 }
118 };
119
120 gateway.sendData(data, callback);
f4f7781b
JA
121 },
122
123 action: function (s_target, s_msg, callback) {
a3364605
JA
124 var data = {
125 method: 'action',
126 args: {
127 target: s_target,
128 msg: s_msg
129 }
130 };
131
132 gateway.sendData(data, callback);
f4f7781b
JA
133 },
134
135
e36e767b 136 notice: function (s_target, s_msg, callback) {
a3364605
JA
137 var data = {
138 method: 'notice',
139 args: {
140 target: s_target,
141 msg: s_msg
142 }
143 };
144
145 gateway.sendData(data, callback);
e36e767b
D
146 },
147
148
f4f7781b 149 join: function (s_channel, callback) {
a3364605
JA
150 var data = {
151 method: 'join',
152 args: {
153 channel: s_channel
154 }
155 };
156
157 gateway.sendData(data, callback);
f4f7781b
JA
158 },
159
a3364605
JA
160 setTopic: function (s_channel, new_topic, callback) {
161 var data = {
162 method: 'topic',
163 args: {
164 channel: s_channel,
165 topic: new_topic
166 }
167 };
aa191535 168
a3364605 169 gateway.sendData(data, callback);
aa191535
D
170 },
171
f4f7781b
JA
172
173 raw: function (v_data, callback) {
a3364605
JA
174 var data = {
175 method: 'raw',
176 args: {
177 data: v_data
178 }
179 };
180
181 gateway.sendData(data, callback);
f4f7781b
JA
182 },
183
184
185 quit: function (msg, callback) {
a3364605
JA
186 //alert("closing");
187 msg = msg || "";
188 var data = {
189 method: 'quit',
190 args: {
191 message: msg
192 }
193 };
194
f4f7781b
JA
195 gateway.sendData(data, callback);
196 }
197
198
199
54f4a22e
D
200
201};