No more need to specify a set of available encodings
[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
cefa0900 20 endofwhois: onWhoisEnd,\r
5989f3f4
JA
21 whowas: onWhoWas,\r
22 endofwhowas: onWhoWasEnd,\r
23 wasnosuchnick: onWasNoSuchNick,\r
635e02c3
D
24 notice: onNotice,\r
25 ctcp_response: onCtcpResponse,\r
26 privmsg: onPrivmsg,\r
27 ctcp_request: onCtcpRequest,\r
28 mode: onMode\r
29 };\r
d9285da9 30 EventBinder.bindIrcEvents('user ' + this.nick, this.irc_events, this, irc_connection);\r
692163ca
JA
31};\r
32\r
692163ca 33\r
2a8d2d5f 34module.exports = IrcUser;\r
692163ca 35\r
635e02c3 36\r
cefa0900 37IrcUser.prototype.dispose = function () {\r
d9285da9 38 EventBinder.unbindIrcEvents('user ' + this.nick, this.irc_events, this.irc_connection);\r
635e02c3 39 this.irc_connection = undefined;\r
692163ca
JA
40};\r
41\r
635e02c3 42\r
092fae2f 43function onNick(event) {\r
692163ca
JA
44 this.irc_connection.clientEvent('nick', {\r
45 nick: event.nick,\r
46 ident: event.ident,\r
47 hostname: event.hostname,\r
48 newnick: event.newnick\r
49 });\r
441f18aa
D
50\r
51 // TODO: uncomment when using an IrcUser per nick\r
d9285da9 52 //EventBinder.unbindIrcEvents('user ' + this.nick, this.irc_events, irc_connection);\r
441f18aa 53 //this.nick = event.newnick;\r
d9285da9 54 //EventBinder.bindIrcEvents('user ' + this.nick, this.irc_events, this, irc_connection);\r
32a09dc1 55}\r
692163ca 56\r
092fae2f 57function onAway(event) {\r
692163ca
JA
58 this.irc_connection.clientEvent('away', {\r
59 nick: event.nick,\r
60 msg: event.msg\r
61 });\r
32a09dc1 62}\r
692163ca 63\r
092fae2f 64function onQuit(event) {\r
692163ca
JA
65 this.irc_connection.clientEvent('quit', {\r
66 nick: event.nick,\r
67 ident: event.ident,\r
68 hostname: event.hostname,\r
69 message: event.trailing\r
70 });\r
32a09dc1 71}\r
692163ca 72\r
092fae2f 73function onWhoisUser(event) {\r
692163ca
JA
74 this.irc_connection.clientEvent('whois', {\r
75 nick: event.nick,\r
76 ident: event.ident,\r
77 host: event.host,\r
78 msg: event.msg,\r
79 end: false\r
80 });\r
32a09dc1 81}\r
692163ca 82\r
f701d5ba
D
83function onWhoisAway(event) {\r
84 this.irc_connection.clientEvent('whois', {\r
85 nick: event.nick,\r
86 away_reason: event.reason,\r
87 end: false\r
88 });\r
32a09dc1 89}\r
f701d5ba 90\r
092fae2f 91function onWhoisServer(event) {\r
692163ca
JA
92 this.irc_connection.clientEvent('whois', {\r
93 nick: event.nick,\r
94 irc_server: event.irc_server,\r
5989f3f4 95 server_info: event.server_info,\r
692163ca
JA
96 end: false\r
97 });\r
32a09dc1 98}\r
692163ca 99\r
092fae2f 100function onWhoisOperator(event) {\r
692163ca
JA
101 this.irc_connection.clientEvent('whois', {\r
102 nick: event.nick,\r
103 msg: event.msg,\r
104 end: false\r
105 });\r
32a09dc1 106}\r
692163ca 107\r
092fae2f 108function onWhoisChannels(event) {\r
692163ca
JA
109 this.irc_connection.clientEvent('whois', {\r
110 nick: event.nick,\r
111 chans: event.chans,\r
112 end: false\r
113 });\r
32a09dc1 114}\r
692163ca 115\r
092fae2f 116function onWhoisModes(event) {\r
692163ca
JA
117 this.irc_connection.clientEvent('whois', {\r
118 nick: event.nick,\r
119 msg: event.msg,\r
120 end: false\r
121 });\r
32a09dc1 122}\r
692163ca 123\r
cefa0900 124function onWhoisIdle(event) {\r
692163ca
JA
125 this.irc_connection.clientEvent('whois', {\r
126 nick: event.nick,\r
127 idle: event.idle,\r
128 logon: event.logon || undefined,\r
129 end: false\r
130 });\r
32a09dc1 131}\r
692163ca 132\r
092fae2f 133function onWhoisRegNick(event) {\r
692163ca
JA
134 this.irc_connection.clientEvent('whois', {\r
135 nick: event.nick,\r
136 msg: event.msg,\r
137 end: false\r
138 });\r
32a09dc1 139}\r
692163ca 140\r
092fae2f 141function onWhoisEnd(event) {\r
692163ca
JA
142 this.irc_connection.clientEvent('whois', {\r
143 nick: event.nick,\r
144 msg: event.msg,\r
145 end: true\r
146 });\r
32a09dc1 147}\r
692163ca 148\r
5989f3f4
JA
149function onWhoWas(event) {\r
150 this.irc_connection.clientEvent('whowas', {\r
151 nick: event.nick,\r
152 ident: event.user,\r
153 host: event.host,\r
154 real_name: event.real_name,\r
155 end: false\r
156 });\r
157}\r
158\r
159function onWasNoSuchNick(event) {\r
160 this.irc_connection.clientEvent('whowas', {\r
161 nick: event.nick,\r
162 end: false\r
163 });\r
164}\r
165\r
166function onWhoWasEnd(event) {\r
167 this.irc_connection.clientEvent('whowas', {\r
168 nick: event.nick,\r
169 end: true\r
170 });\r
171}\r
172\r
092fae2f 173function onNotice(event) {\r
692163ca 174 this.irc_connection.clientEvent('notice', {\r
0190c2c9 175 from_server: event.from_server,\r
692163ca
JA
176 nick: event.nick,\r
177 ident: event.ident,\r
178 hostname: event.hostname,\r
179 target: event.target,\r
180 msg: event.msg\r
181 });\r
32a09dc1 182}\r
692163ca 183\r
092fae2f 184function onCtcpResponse(event) {\r
692163ca
JA
185 this.irc_connection.clientEvent('ctcp_response', {\r
186 nick: event.nick,\r
187 ident: event.ident,\r
188 hostname: event.hostname,\r
189 channel: event.channel,\r
190 msg: event.msg\r
191 });\r
32a09dc1 192}\r
692163ca 193\r
092fae2f 194function onPrivmsg(event) {\r
cefa0900 195 this.irc_connection.clientEvent('msg', {\r
692163ca
JA
196 nick: event.nick,\r
197 ident: event.ident,\r
198 hostname: event.hostname,\r
199 channel: event.channel,\r
200 msg: event.msg\r
201 });\r
32a09dc1 202}\r
692163ca 203\r
092fae2f 204function onCtcpRequest(event) {\r
692163ca
JA
205 this.irc_connection.clientEvent('ctcp_request', {\r
206 nick: event.nick,\r
207 ident: event.ident,\r
208 hostname: event.hostname,\r
209 target: event.target,\r
210 type: event.type,\r
211 msg: event.msg\r
212 });\r
32a09dc1 213}\r
a7973dfb
JA
214\r
215function onMode(event) {\r
216 this.irc_connection.clientEvent('mode', {\r
217 target: event.target,\r
218 nick: event.nick,\r
219 modes: event.modes\r
220 });\r
32a09dc1 221}\r