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