forked from Migracode-Barcelona/node-challenge-chat-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
103 lines (89 loc) · 2.79 KB
/
server.js
File metadata and controls
103 lines (89 loc) · 2.79 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
103
const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());
const messages = [
{ id: 0, from: "Bart", text: "Welcome to CYF chat system!" },
{ id: 1, from: "Anne", text: "Good to see you" },
{ id: 2, from: "Helen", text: "Long time, no see" },
{ id: 3, from: "Anne", text: "let's go for a coffee" },
];
function getNextId() {
const lastMessage = messages[messages.length - 1].id;
const nextId = parseInt(lastMessage) + 1;
return nextId;
}
app.get("/", function (request, response) {
response.sendFile(__dirname + "/index.html");
});
app.get("/messages", (req, res) => {
res.status(201).send(messages);
});
app.get("/messages/search", (req, res) => {
const text = req.query.text;
const result = messages.filter(message => message.text.includes(text));
if (result.length > 0) {
res.status(201).send(result);
} else {
res.status(404).send("These messages not found");
}
});
app.get("/messages/lastest", (req, res) => {
const result = messages.slice(messages.length - 10);
console.log(messages.length - 10)
console.log(result)
if (result.length > 0) {
res.status(201).send(result);
} else {
res.status(404).send("These messages not found");
}
});
app.get("/messages/:id", (req, res) => {
const messageId = parseInt(req.params.id);
const message = messages.find((message) => message.id === messageId);
if (message) {
res.status(201).send(message);
} else {
res.status(404).send("This message does not exist");
}
});
app.post("/messages", (req, res) => {
const { from, text } = req.body;
const id = getNextId();
const timeSent = new Date();
const newMessage = { id: id, from: from, text: text, timeSent: timeSent.toLocaleString() };
if (from === "" || text === "") {
res.status(400).send("This message is not complete.");
} else {
messages.push(newMessage);
res.status(201).send(newMessage);
}
});
app.put("/messages/:id", (req, res) => {
const messageId = parseInt(req.params.id);
let updatedMessage = req.body;
console.log(updatedMessage);
let message = messages.find((message) => message.id === messageId);
if (message) {
message.from = updatedMessage.from;
message.text = updatedMessage.text;
res.status(201).send(updatedMessage);
} else {
res.status(404).send("This message does not exist");
}
});
app.delete("/messages/:id", (req, res) => {
const messageId = parseInt(req.params.id);
const message = messages.find((message) => message.id === messageId);
if (message) {
const index = messages.indexOf(message);
messages.splice(index, 1);
res.status(201).send({ success: true });
} else {
res.status(404).send("This message does not exist");
}
});
app.listen(3000, () => {
console.log("Listening on port 3000");
});