diff --git a/src/server.js b/src/server.js index 4a63fcb..20332a9 100644 --- a/src/server.js +++ b/src/server.js @@ -21,15 +21,15 @@ server.create = function create() { let splitted = data.toString("ascii").split("\r\n")[0].split(" ") let tokenized = [] let lastParam = -1 - for(let i = 0; i < splitted.length; i++) { - if (lastParam > 0) { - tokenized[lastParam] = tokenized[lastParam] + " " + splitted[i] - } else if (splitted[i].charAt(0) == ":" && i > 0) { - lastParam = i - tokenized[lastParam] = splitted[i] - } else { - tokenized[i] = splitted[i] - } + for (let i = 0; i < splitted.length; i++) { + if (lastParam > 0) { + tokenized[lastParam] = tokenized[lastParam] + " " + splitted[i] + } else if (splitted[i].charAt(0) == ":" && i > 0) { + lastParam = i + tokenized[lastParam] = splitted[i] + } else { + tokenized[i] = splitted[i] + } } let command = tokenized[0].toUpperCase() switch (command) { @@ -57,13 +57,14 @@ server.create = function create() { break; case "USER": - // ignoring servername and hostname, not useful these days - user.register(tokenized[1], tokenized[4]) - let address = user.getAddress() - socket.write(`001 ${user.nickname} :Welcome to the example IRC Project ${user.nickname}!~${user.username}@${address}`) - break; + // ignoring servername and hostname, not useful these days + user.register(tokenized[1], tokenized[4]) + let address = user.getAddress() + socket.write(`001 ${user.nickname} :Welcome to the example IRC Project ${user.nickname}!~${user.username}@${address}`) + break; case "QUIT": - server.closeConnection(user) + server.closeConnection(user.nickname) + break; default: console.error(`Unknown command: ${command}`); } @@ -75,21 +76,14 @@ server.create = function create() { throw err; }); - server.getUserlist = function() { - return userlist - } - - server.getUserObjectFromNickName = function (nickname) { - user_list = server.getUserlist() - if (nickname in user_list) - return user_list[nickname] + server.getUserlist = function () { + return userlist } server.closeConnection = function (user_nickname) { - console.log(user_nickname) - userObject = server.getUserObjectFromNickName(user_nickname) - userObject.closeConnection() - delete server.getUserlist()[user_nickname] + let user = userlist[user_nickname] + user.closeConnection() + delete userlist[user_nickname]; } return server diff --git a/src/user.js b/src/user.js index 7f0b2ef..4042f40 100644 --- a/src/user.js +++ b/src/user.js @@ -29,19 +29,10 @@ function User(socket) { this.realname = realname } - this.quit = function (quit_message) { - if (quit_message === undefined) - this.sendMessage("QUIT") - else this.sendMessage(("QUIT :" + quit_message)) - } - this.closeConnection = function () { - socket.close() + socket.destroy() } - this.sendMessage = function (message) { - connection.write(message) - } } diff --git a/test/command_quit.js b/test/command_quit.js index 80e0dfe..f4828a8 100644 --- a/test/command_quit.js +++ b/test/command_quit.js @@ -15,8 +15,11 @@ describe("QUIT OK", function () { server.emit('connection', mockedSock) mockedSock.emit('data', Buffer.from("NICK nick" + i + "\r\n", "ascii")) + mockedSock.destroy = function () { + done() + } } - console.log(server.getUserlist()) + server.getUserlist()["nick0"].connection.emit('data', Buffer.from("QUIT :Gone to have lunch\r\n", "ascii")) }) }) \ No newline at end of file