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: '', | |
784ae106 | 12 | user_prefixes: ['~','&','@','+'], |
c984ba1b | 13 | socket: null, |
54f4a22e | 14 | |
1614c0f9 D |
15 | start: function (kiwi_server) { |
16 | gateway.socket = io.connect(kiwi_server); | |
bad1ea63 JA |
17 | gateway.socket.on('connect', function () { |
18 | gateway.sendData = function (data, callback) { | |
19 | gateway.socket.emit('message', {sid: this.session_id, data: $.toJSON(data)}, callback); | |
20 | }; | |
21 | gateway.socket.on('message', gateway.parse); | |
f4f7781b JA |
22 | gateway.socket.on('disconnect', function () { |
23 | // Teardown procedure here | |
784ae106 | 24 | $(gateway).trigger("ondisconnect", {}); |
f4f7781b | 25 | }); |
c984ba1b | 26 | }); |
f4f7781b | 27 | }, |
c984ba1b | 28 | |
f4f7781b | 29 | connect: function (host, port, ssl, callback) { |
bad1ea63 JA |
30 | gateway.socket.emit('irc connect', this.nick, host, port, ssl, callback); |
31 | }, | |
32 | ||
f4f7781b JA |
33 | /* |
34 | Events: | |
35 | msg | |
36 | action | |
37 | server_connect | |
38 | options | |
39 | motd | |
40 | notice | |
41 | userlist | |
42 | nick | |
43 | join | |
44 | topic | |
45 | part | |
46 | kick | |
47 | quit | |
48 | whois | |
49 | syncchannel_redirect | |
50 | debug | |
51 | */ | |
52 | parse: function (item) { | |
53 | if (item.event !== undefined) { | |
54 | $(gateway).trigger("on" + item.event, item); | |
54f4a22e | 55 | |
f4f7781b JA |
56 | switch (item.event) { |
57 | case 'options': | |
58 | $.each(item.options, function (name, value) { | |
59 | switch (name) { | |
60 | case 'CHANTYPES': | |
61 | gateway.channel_prefix = value.charAt(0); | |
62 | break; | |
63 | case 'NETWORK': | |
64 | gateway.network_name = value; | |
65 | break; | |
66 | case 'PREFIX': | |
67 | gateway.user_prefixes = value; | |
68 | break; | |
69 | } | |
70 | }); | |
71 | break; | |
54f4a22e | 72 | |
f4f7781b JA |
73 | case 'sync': |
74 | if (gateway.onSync && gateway.syncing) { | |
75 | gateway.syncing = false; | |
76 | gateway.onSync(item); | |
77 | } | |
78 | break; | |
79 | } | |
80 | } | |
81 | }, | |
82 | ||
83 | sendData: function () {}, | |
84 | ||
85 | sync: function (callback) { | |
86 | if (this.session_id === null) { | |
87 | return; | |
88 | } | |
54f4a22e | 89 | |
f4f7781b JA |
90 | var data = { |
91 | method: 'sync', | |
92 | args: {} | |
93 | }; | |
54f4a22e | 94 | |
f4f7781b JA |
95 | gateway.syncing = true; |
96 | gateway.sendData(data, callback); | |
97 | }, | |
98 | ||
99 | debug: function (callback) { | |
100 | var data = { | |
101 | method: 'debug', | |
102 | args: {} | |
103 | }; | |
104 | ||
105 | gateway.sendData(data, callback); | |
106 | }, | |
107 | ||
108 | ||
109 | msg: function (s_target, s_msg, callback) { | |
110 | var data = { | |
111 | method: 'msg', | |
112 | args: { | |
113 | target: s_target, | |
114 | msg: s_msg | |
115 | } | |
116 | }; | |
117 | ||
118 | gateway.sendData(data, callback); | |
119 | }, | |
120 | ||
121 | action: function (s_target, s_msg, callback) { | |
122 | var data = { | |
123 | method: 'action', | |
124 | args: { | |
125 | target: s_target, | |
126 | msg: s_msg | |
127 | } | |
128 | }; | |
129 | ||
130 | gateway.sendData(data, callback); | |
131 | }, | |
132 | ||
133 | ||
134 | join: function (s_channel, callback) { | |
135 | var data = { | |
136 | method: 'join', | |
137 | args: { | |
138 | channel: s_channel | |
139 | } | |
140 | }; | |
141 | ||
142 | gateway.sendData(data, callback); | |
143 | }, | |
144 | ||
145 | ||
146 | raw: function (v_data, callback) { | |
147 | var data = { | |
148 | method: 'raw', | |
149 | args: { | |
150 | data: v_data | |
151 | } | |
152 | }; | |
153 | ||
154 | gateway.sendData(data, callback); | |
155 | }, | |
156 | ||
157 | ||
158 | quit: function (msg, callback) { | |
159 | //alert("closing"); | |
160 | msg = msg || ""; | |
161 | var data = { | |
162 | method: 'quit', | |
163 | args: { | |
164 | message: msg | |
165 | } | |
166 | }; | |
167 | ||
168 | gateway.sendData(data, callback); | |
169 | } | |
170 | ||
171 | ||
172 | ||
54f4a22e D |
173 | |
174 | }; |