Commit | Line | Data |
---|---|---|
2a8d2d5f | 1 | var util = require('util'),\r |
635e02c3 | 2 | EventBinder = require('./eventbinder.js');\r |
2a8d2d5f | 3 | \r |
692163ca JA |
4 | var 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 | 37 | module.exports = IrcUser;\r |
692163ca | 38 | \r |
635e02c3 | 39 | \r |
cefa0900 | 40 | IrcUser.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 | 46 | function 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 | 61 | function 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 | 69 | function 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 | 79 | function 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 |
89 | function 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 | 97 | function 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 | 106 | function 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 | 114 | function 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 | 122 | function 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 | 130 | function 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 | 139 | function 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 |
147 | function 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 | |
155 | function 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 | |
163 | function 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 | 171 | function 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 |
179 | function 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 | |
189 | function 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 | |
196 | function 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 | 203 | function 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 | 215 | function 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 | 226 | function 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 | 245 | function 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 |
257 | function 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 |