-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
104 lines (90 loc) · 2.84 KB
/
Copy pathapp.js
File metadata and controls
104 lines (90 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
var express = require('express');
var app = express();
var messages = {};
var maxMessagePerRoom = 1000;
var defaultMemberExpiration = 5*60;
var members = {};
var cors = require('cors');
app.use(cors());
app.post('/api/v1/chatroom/:roomName', function(request, response){
var roomName = request.params.roomName;
var username = request.query["username"]
var message = request.query["message"];
var expireAfter = request.query["expireafter"];
// Make sure there is a username
if (!expireAfter) {
expireAfter = defaultMemberExpiration;
}
if (!username || username == "") {
username = "Guest";
}
// A function to validate message and create messages[room]
var messageValidPush = function(message, room){
if (message != undefined && message != "") {
if (messages[room] == undefined){
messages[room] = [];
}
messages[room].push(username + ": " + message);
}
};
//First if make sure roomName is defined
if (roomName != undefined && roomName != ""){
messageValidPush(message, roomName);
}
if (members[roomName] == undefined){
members[roomName] = [];
}
var membersString = updateMembers(members[roomName], username, expireAfter);
if (membersString == undefined) {membersString = "";}
var chatRoomJson = {
"room": {
"name": roomName,
"members": membersString,
"messages": messages[roomName]
}
};
response.status(200);
response.send(chatRoomJson);
});
app.listen(56000, function (){
console.log('Example app listening on port 56000')
})
function updateMembers(array, username, expireAfter){
var currentTimeStamp = Date.now() + expireAfter * 1000;
var member = username + ":" + currentTimeStamp;
noRepeatUsername(array, username);
if(expireAfter != 0){
array.push(member);
}
checkExpireMember(array);
var string = convertArraytoString(array);
return string;
}
function noRepeatUsername(array, username){
for (var i = 0; i < array.length; i++){
var arrayMember = array[i].split(":")[0];
var arrayTime = array[i].split(":")[1];
if(arrayMember == username) {
array.splice(i, 1);
}
}
}
function checkExpireMember(array){
for (var i = 0; i < array.length; i++){
var arrayMember = array[i].split(":")[0];
var arrayTime = array[i].split(":")[1];
if (arrayTime < Date.now()) {
array.splice(i, 1);
}
}
}
function convertArraytoString(array){
var resultString = "";
if (array != undefined && array != []){
resultString = array[0];
for (i = 1; i < array.length; i++){
resultString += "," + array[i];
}
}
return resultString;
}