Commit | Line | Data |
---|---|---|
f4f7781b | 1 | /*jslint browser: true, confusion: true, sloppy: true, maxerr: 50, indent: 4 */ |
1eaf214f | 2 | /*globals io, $, kiwi_server */ |
54f4a22e D |
3 | var 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 | }; |