Commit | Line | Data |
---|---|---|
f3dbbd91 D |
1 | var _ = require('underscore');\r |
2 | \r | |
3 | \r | |
4 | \r | |
5 | \r | |
6 | var ClientCommandset = function (client) {\r | |
7 | this.client = client;\r | |
8 | };\r | |
9 | module.exports.ClientCommandset = ClientCommandset;\r | |
10 | \r | |
11 | ClientCommandset.prototype.run = function (command, args, irc_connection, callback) {\r | |
12 | // Do we have a function to handle this command?\r | |
13 | if (!listeners[command.toUpperCase()]) {\r | |
14 | return;\r | |
15 | }\r | |
16 | \r | |
17 | return listeners[command.toUpperCase()](args, irc_connection, callback);\r | |
18 | };\r | |
19 | \r | |
20 | \r | |
21 | \r | |
22 | \r | |
23 | var listeners = {\r | |
24 | PRIVMSG: function (args, irc_connection, callback) {\r | |
25 | if (args.target && (args.msg)) {\r | |
26 | // TODO: Enable plugin support here again\r | |
27 | //obj = kiwi.kiwi_mod.run('msgsend', args, {websocket: websocket});\r | |
28 | //if (obj !== null) {\r | |
29 | irc_connection.write('PRIVMSG ' + args.target + ' :' + args.msg, callback);\r | |
30 | //}\r | |
31 | }\r | |
32 | },\r | |
33 | \r | |
34 | \r | |
35 | CTCP: function (args, irc_connection, callback) {\r | |
36 | if ((args.target) && (args.type)) {\r | |
37 | if (args.request) {\r | |
38 | irc_connection.write('PRIVMSG ' + args.target + ' :' + String.fromCharCode(1) + args.type.toUpperCase() + ' ' + args.params + String.fromCharCode(1), callback);\r | |
39 | } else {\r | |
40 | irc_connection.write('NOTICE ' + args.target + ' :' + String.fromCharCode(1) + args.type.toUpperCase() + ' ' + args.params + String.fromCharCode(1), callback);\r | |
41 | }\r | |
42 | }\r | |
43 | },\r | |
44 | \r | |
45 | \r | |
46 | RAW: function (args, irc_connection, callback) {\r | |
47 | irc_connection.write(args.data, callback);\r | |
48 | },\r | |
49 | \r | |
50 | \r | |
51 | JOIN: function (args, irc_connection, callback) {\r | |
52 | if (args.channel) {\r | |
53 | channels = args.channel.split(",");\r | |
54 | keys = (args.key) ? args.key.split(",") : [];\r | |
55 | _.each(channels, function (chan, index) {\r | |
56 | irc_connection.write('JOIN ' + chan + ' ' + (keys[index] || ''), callback);\r | |
57 | });\r | |
58 | }\r | |
59 | },\r | |
60 | \r | |
61 | \r | |
62 | PART: function (args, irc_connection, callback) {\r | |
63 | if (args.channel) {\r | |
64 | _.each(args.channel.split(","), function (chan) {\r | |
65 | irc_connection.write('PART ' + chan, callback);\r | |
66 | });\r | |
67 | }\r | |
68 | },\r | |
69 | \r | |
70 | \r | |
71 | TOPIC: function (args, irc_connection, callback) {\r | |
72 | if (args.channel) {\r | |
73 | if (args.topic) {\r | |
74 | irc_connection.write('TOPIC ' + args.channel + ' :' + args.topic, callback);\r | |
75 | } else {\r | |
76 | irc_connection.write('TOPIC ' + args.channel, callback);\r | |
77 | }\r | |
78 | }\r | |
79 | },\r | |
80 | \r | |
81 | \r | |
82 | KICK: function (args, irc_connection, callback) {\r | |
83 | if ((args.channel) && (args.nick)) {\r | |
84 | irc_connection.write('KICK ' + args.channel + ' ' + args.nick + ':' + args.reason, callback);\r | |
85 | }\r | |
86 | },\r | |
87 | \r | |
88 | \r | |
89 | QUIT: function (args, irc_connection, callback) {\r | |
90 | websocket.ircConnection.end('QUIT :' + args.message + '\r\n');\r | |
91 | websocket.sentQUIT = true;\r | |
92 | websocket.ircConnection.destroySoon();\r | |
93 | websocket.disconnect();\r | |
94 | },\r | |
95 | \r | |
96 | \r | |
97 | NOTICE: function (args, irc_connection, callback) {\r | |
98 | if ((args.target) && (args.msg)) {\r | |
99 | irc_connection.write('NOTICE ' + args.target + ' :' + args.msg, callback);\r | |
100 | }\r | |
101 | },\r | |
102 | \r | |
103 | \r | |
104 | MODE: function (args, irc_connection, callback) {\r | |
105 | if ((args.target) && (args.mode)) {\r | |
106 | irc_connection.write('MODE ' + args.target + ' ' + args.mode + ' ' + args.params, callback);\r | |
107 | }\r | |
108 | },\r | |
109 | \r | |
110 | \r | |
111 | NICK: function (args, irc_connection, callback) {\r | |
112 | if (args.nick) {\r | |
113 | irc_connection.write('NICK ' + args.nick, callback);\r | |
114 | }\r | |
115 | },\r | |
116 | \r | |
117 | \r | |
118 | KIWI: function (args, irc_connection, callback) {\r | |
119 | if ((args.target) && (args.data)) {\r | |
120 | irc_connection.write('PRIVMSG ' + args.target + ': ' + String.fromCharCode(1) + 'KIWI ' + args.data + String.fromCharCode(1), callback);\r | |
121 | }\r | |
122 | }\r | |
123 | };\r |