forked from CodeYourFuture/Node-Coursework-Week2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
118 lines (94 loc) · 2.45 KB
/
server.js
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
const port = 3001;
app.use(express.json());
app.use(cors());
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
const welcomeMessage = {
id: 0,
from: 'Bart',
text: 'Welcome to CYF chat system!',
};
//This array is our "data store".
//We will start with one message in the array.
//Note: messages will be lost when Glitch restarts our server.
const messages = [welcomeMessage];
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.get('/messages/:id', (req, res) => {
const { id } = req.params;
const msg = messages.find(message => message.id === parseInt(id));
if (msg !== undefined) {
res.json(msg);
} else {
res.status(404).send();
}
});
app.delete('/messages/:id', (req, res) => {
const { id } = req.params;
let index = messages.findIndex(message => message.id === parseInt(id));
if (index === -1) {
res.status(404).send();
} else {
messages.splice(index, 1);
res.status(200).send();
}
});
app.put('/messages/:id', (req, res) => {
const { id } = req.params;
let msg = messages.find(message => message.id === parseInt(id));
let newMsg = req.body;
msg.text = newMsg.text;
res.status(200).send();
});
app.get('/messages', (req, res) => {
const { text, sort, limit } = req.query;
let foundMessages = messages.slice();
if (text !== undefined) {
foundMessages = messages.filter(msg => msg.text.includes(text));
}
if (sort !== undefined && sort === 'id') {
foundMessages.sort(function (msg1, msg2) {
return msg2.id - msg1.id;
});
}
if (limit !== undefined) {
foundMessages = foundMessages.slice(0, Number(limit));
}
res.json(foundMessages);
});
app.post('/messages', (req, res) => {
let newMsg = req.body;
if (validateMsg(newMsg)) {
newMsg.id = createId();
newMsg.timeSent = new Date();
messages.push(newMsg);
res.status(200).send();
} else {
res.status(400).send();
}
});
function validateMsg(newMsg) {
if (
newMsg !== undefined &&
newMsg.from !== undefined &&
newMsg.from.length !== 0 &&
newMsg.text !== undefined &&
newMsg.text.length !== 0
)
return true;
return false;
}
function createId() {
let newId = messages[messages.length - 1].id + 1;
return newId;
}
app.listen(port, () =>
console.log(`[MockServer] listening at http://localhost:${port}`)
);