Remove 'trailing' from IRC message objects
[KiwiIRC.git] / server / irc / user.js
CommitLineData
2a8d2d5f 1var util = require('util'),\r
635e02c3 2 EventBinder = require('./eventbinder.js');\r
2a8d2d5f 3\r
692163ca
JA
4var IrcUser = function (irc_connection, nick) {\r
5 this.irc_connection = irc_connection;\r
6 this.nick = nick;\r
32a09dc1 7\r
635e02c3
D
8 this.irc_events = {\r
9 nick: onNick,\r
10 away: onAway,\r
cefa0900 11 quit: onQuit,\r
635e02c3 12 whoisuser: onWhoisUser,\r
f701d5ba 13 whoisaway: onWhoisAway,\r
635e02c3
D
14 whoisoperator: onWhoisOperator,\r
15 whoischannels: onWhoisChannels,\r
16 whoismodes: onWhoisModes,\r
17 whoisidle: onWhoisIdle,\r
cefa0900 18 whoisregnick: onWhoisRegNick,\r
5989f3f4 19 whoisserver: onWhoisServer,\r
3d753975
D
20 whoishost: onWhoisHost,\r
21 whoissecure: onWhoisSecure,\r
22 whoisaccount: onWhoisAccount,\r
cefa0900 23 endofwhois: onWhoisEnd,\r
5989f3f4
JA
24 whowas: onWhoWas,\r
25 endofwhowas: onWhoWasEnd,\r
26 wasnosuchnick: onWasNoSuchNick,\r
635e02c3
D
27 notice: onNotice,\r
28 ctcp_response: onCtcpResponse,\r
29 privmsg: onPrivmsg,\r
30 ctcp_request: onCtcpRequest,\r
31 mode: onMode\r
32 };\r
d9285da9 33 EventBinder.bindIrcEvents('user ' + this.nick, this.irc_events, this, irc_connection);\r
692163ca
JA
34};\r
35\r
692163ca 36\r
2a8d2d5f 37module.exports = IrcUser;\r
692163ca 38\r
635e02c3 39\r
cefa0900 40IrcUser.prototype.dispose = function () {\r
d9285da9 41 EventBinder.unbindIrcEvents('user ' + this.nick, this.irc_events, this.irc_connection);\r
635e02c3 42 this.irc_connection = undefined;\r
692163ca
JA
43};\r
44\r
635e02c3 45\r
092fae2f 46function onNick(event) {\r
692163ca
JA
47 this.irc_connection.clientEvent('nick', {\r
48 nick: event.nick,\r
49 ident: event.ident,\r
50 hostname: event.hostname,\r
d10c74a6
JA
51 newnick: event.newnick,\r
52 time: event.time\r
692163ca 53 });\r
441f18aa
D
54\r
55 // TODO: uncomment when using an IrcUser per nick\r
d9285da9 56 //EventBinder.unbindIrcEvents('user ' + this.nick, this.irc_events, irc_connection);\r
441f18aa 57 //this.nick = event.newnick;\r
d9285da9 58 //EventBinder.bindIrcEvents('user ' + this.nick, this.irc_events, this, irc_connection);\r
32a09dc1 59}\r
692163ca 60\r
092fae2f 61function onAway(event) {\r
692163ca
JA
62 this.irc_connection.clientEvent('away', {\r
63 nick: event.nick,\r
d10c74a6
JA
64 msg: event.msg,\r
65 time: event.time\r
692163ca 66 });\r
32a09dc1 67}\r
692163ca 68\r
092fae2f 69function onQuit(event) {\r
692163ca
JA
70 this.irc_connection.clientEvent('quit', {\r
71 nick: event.nick,\r
72 ident: event.ident,\r
73 hostname: event.hostname,\r
17dfa698 74 message: event.message,\r
d10c74a6 75 time: event.time\r
692163ca 76 });\r
32a09dc1 77}\r
692163ca 78\r
092fae2f 79function onWhoisUser(event) {\r
692163ca
JA
80 this.irc_connection.clientEvent('whois', {\r
81 nick: event.nick,\r
82 ident: event.ident,\r
83 host: event.host,\r
84 msg: event.msg,\r
85 end: false\r
86 });\r
32a09dc1 87}\r
692163ca 88\r
f701d5ba
D
89function onWhoisAway(event) {\r
90 this.irc_connection.clientEvent('whois', {\r
91 nick: event.nick,\r
92 away_reason: event.reason,\r
93 end: false\r
94 });\r
32a09dc1 95}\r
f701d5ba 96\r
092fae2f 97function onWhoisServer(event) {\r
692163ca
JA
98 this.irc_connection.clientEvent('whois', {\r
99 nick: event.nick,\r
100 irc_server: event.irc_server,\r
5989f3f4 101 server_info: event.server_info,\r
692163ca
JA
102 end: false\r
103 });\r
32a09dc1 104}\r
692163ca 105\r
092fae2f 106function onWhoisOperator(event) {\r
692163ca
JA
107 this.irc_connection.clientEvent('whois', {\r
108 nick: event.nick,\r
109 msg: event.msg,\r
110 end: false\r
111 });\r
32a09dc1 112}\r
692163ca 113\r
092fae2f 114function onWhoisChannels(event) {\r
692163ca
JA
115 this.irc_connection.clientEvent('whois', {\r
116 nick: event.nick,\r
117 chans: event.chans,\r
118 end: false\r
119 });\r
32a09dc1 120}\r
692163ca 121\r
092fae2f 122function onWhoisModes(event) {\r
692163ca
JA
123 this.irc_connection.clientEvent('whois', {\r
124 nick: event.nick,\r
125 msg: event.msg,\r
126 end: false\r
127 });\r
32a09dc1 128}\r
692163ca 129\r
cefa0900 130function onWhoisIdle(event) {\r
692163ca
JA
131 this.irc_connection.clientEvent('whois', {\r
132 nick: event.nick,\r
133 idle: event.idle,\r
134 logon: event.logon || undefined,\r
135 end: false\r
136 });\r
32a09dc1 137}\r
692163ca 138\r
092fae2f 139function onWhoisRegNick(event) {\r
692163ca
JA
140 this.irc_connection.clientEvent('whois', {\r
141 nick: event.nick,\r
142 msg: event.msg,\r
143 end: false\r
144 });\r
32a09dc1 145}\r
692163ca 146\r
3d753975
D
147function onWhoisHost(event) {\r
148 this.irc_connection.clientEvent('whois', {\r
149 nick: event.nick,\r
150 msg: event.msg,\r
151 end: false\r
152 });\r
153}\r
154\r
155function onWhoisSecure(event) {\r
156 this.irc_connection.clientEvent('whois', {\r
157 nick: event.nick,\r
158 msg: 'Using a secure connection',\r
159 end: false\r
160 });\r
161}\r
162\r
163function onWhoisAccount(event) {\r
164 this.irc_connection.clientEvent('whois', {\r
165 nick: event.nick,\r
166 msg: 'Logged in as ' + event.account,\r
167 end: false\r
168 });\r
169}\r
170\r
092fae2f 171function onWhoisEnd(event) {\r
692163ca
JA
172 this.irc_connection.clientEvent('whois', {\r
173 nick: event.nick,\r
174 msg: event.msg,\r
175 end: true\r
176 });\r
32a09dc1 177}\r
692163ca 178\r
5989f3f4
JA
179function onWhoWas(event) {\r
180 this.irc_connection.clientEvent('whowas', {\r
181 nick: event.nick,\r
182 ident: event.user,\r
183 host: event.host,\r
184 real_name: event.real_name,\r
185 end: false\r
186 });\r
187}\r
188\r
189function onWasNoSuchNick(event) {\r
190 this.irc_connection.clientEvent('whowas', {\r
191 nick: event.nick,\r
192 end: false\r
193 });\r
194}\r
195\r
196function onWhoWasEnd(event) {\r
197 this.irc_connection.clientEvent('whowas', {\r
198 nick: event.nick,\r
199 end: true\r
200 });\r
201}\r
202\r
092fae2f 203function onNotice(event) {\r
692163ca 204 this.irc_connection.clientEvent('notice', {\r
0190c2c9 205 from_server: event.from_server,\r
692163ca
JA
206 nick: event.nick,\r
207 ident: event.ident,\r
208 hostname: event.hostname,\r
209 target: event.target,\r
d10c74a6
JA
210 msg: event.msg,\r
211 time: event.time\r
692163ca 212 });\r
32a09dc1 213}\r
692163ca 214\r
092fae2f 215function onCtcpResponse(event) {\r
692163ca
JA
216 this.irc_connection.clientEvent('ctcp_response', {\r
217 nick: event.nick,\r
218 ident: event.ident,\r
219 hostname: event.hostname,\r
220 channel: event.channel,\r
d10c74a6
JA
221 msg: event.msg,\r
222 time: event.time\r
692163ca 223 });\r
32a09dc1 224}\r
692163ca 225\r
092fae2f 226function onPrivmsg(event) {\r
6c7b2006
D
227 var that = this;\r
228\r
229 global.modules.emit('irc message', {\r
230 connection: this.irc_connection,\r
231 irc_event: event\r
232 })\r
233 .done(function() {\r
234 that.irc_connection.clientEvent('msg', {\r
235 nick: event.nick,\r
236 ident: event.ident,\r
237 hostname: event.hostname,\r
238 channel: event.channel,\r
239 msg: event.msg,\r
240 time: event.time\r
241 });\r
692163ca 242 });\r
32a09dc1 243}\r
692163ca 244\r
092fae2f 245function onCtcpRequest(event) {\r
692163ca
JA
246 this.irc_connection.clientEvent('ctcp_request', {\r
247 nick: event.nick,\r
248 ident: event.ident,\r
249 hostname: event.hostname,\r
250 target: event.target,\r
251 type: event.type,\r
d10c74a6
JA
252 msg: event.msg,\r
253 time: event.time\r
692163ca 254 });\r
32a09dc1 255}\r
a7973dfb
JA
256\r
257function onMode(event) {\r
258 this.irc_connection.clientEvent('mode', {\r
259 target: event.target,\r
260 nick: event.nick,\r
d10c74a6
JA
261 modes: event.modes,\r
262 time: event.time\r
a7973dfb 263 });\r
32a09dc1 264}\r