marie/server.js

62 lines
1.7 KiB
JavaScript

async function main() {
// Imports et constantes.
const fs = require('fs').promises;
const express = require('express');
const bodyParser = require('body-parser')
const ip = '0.0.0.0';
const port = 8000;
const app = express();
let id = 1;
// Permet de récupérer les données venant du client.
app.use(bodyParser.urlencoded({ extended: true }));
// Page d'accueil.
app.get('/', function(req, res) {
// On envoie le contenu du fichier index.html.
return res.sendFile(__dirname + '/html/index.html');
});
// Envoi du fichier main.js
app.get('/main.js', function(req, res) {
return res.sendFile(__dirname + '/js/main.js');
});
// Route de récupération des données.
app.post('/data', async function(req, res) {
// Les données sont dans l'objet req.body.
console.log(req.body);
// Ouverture du fichier en mode append.
let file = await fs.open(__dirname + '/data/users.csv', 'a');
// Ajout d'une ligne.
file.write(id++ + ',' + req.body.username + '\n');
// Envoi de la réponse pour terminer la requête.
res.send('Ok');
});
// Création du dossier où les données seront stockées.
try {
await fs.mkdir(__dirname + '/data');
} catch (err) {
// Si une erreur existe autre que "le dossier existe déjà", on stoppe le serveur.
if (err !== null && (err.errno !== -17 || err.code !== 'EEXIST')) {
throw err;
}
}
// On démarre le serveur, puis on peut y accéder dans le navigateur en allant sur http://localhost:8000
app.listen(port, ip, function() {
console.log('Started listening on ' + port);
});
}
main();