74 lines
1.5 KiB
JavaScript
74 lines
1.5 KiB
JavaScript
const express = require('express');
|
|
const app = express();
|
|
const bodyParser = require('body-parser');
|
|
const morgan = require('morgan');
|
|
|
|
// Pour cette démo, les statuts sont uniquement conservés en
|
|
// mémoire
|
|
const statuses = {};
|
|
|
|
app.use(morgan('combined'));
|
|
|
|
// On utilise le module "body-parser"
|
|
// pour faciliter la désérialisation des données
|
|
// des appels à l'API
|
|
app.use(bodyParser.json());
|
|
|
|
// POST /statuses
|
|
// Ajoute un nouveau statut pour l'utilisateur donné
|
|
app.post('/statuses', (req, res) => {
|
|
|
|
const newStatus = req.body;
|
|
|
|
if(!newStatus.username || !newStatus.text) {
|
|
return res.status(200).send({
|
|
ok: false,
|
|
error: "Invalid status.",
|
|
});
|
|
}
|
|
|
|
if(newStatus.text.length > 200) {
|
|
return res.status(200).send({
|
|
ok: false,
|
|
error: "Status text too long.",
|
|
});
|
|
}
|
|
|
|
const userStatuses = statuses[newStatus.username] || [];
|
|
userStatuses.unshift({
|
|
text: newStatus.text,
|
|
createdAt: new Date(),
|
|
});
|
|
statuses[newStatus.username] = userStatuses;
|
|
|
|
return res.status(200).send({
|
|
ok: true,
|
|
});
|
|
|
|
});
|
|
|
|
// GET /statuses/:username
|
|
// Retourne les status de l'utilisateur donné
|
|
app.get('/statuses/:username', (req, res) => {
|
|
|
|
const username = req.params.username;
|
|
|
|
if(!username) {
|
|
return res.status(200).send({
|
|
ok: false,
|
|
error: "Invalid username.",
|
|
});
|
|
}
|
|
|
|
const userStatuses = statuses[username] || [];
|
|
|
|
return res.status(200).send({
|
|
ok: true,
|
|
statuses: userStatuses,
|
|
});
|
|
|
|
});
|
|
|
|
app.listen(8080, () => console.log('listening on port 8080'));
|
|
|