217 lines
6.8 KiB
JavaScript
217 lines
6.8 KiB
JavaScript
const express = require('express');
|
|
const cors = require('cors');
|
|
const path = require('path');
|
|
const app = express();
|
|
const bodyParser = require('body-parser');
|
|
const fs = require('fs');
|
|
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
app.post('/api/submit', (req, res) => {
|
|
const data = req.body;
|
|
console.log('Données reçues (client->server) :', data);
|
|
|
|
// Lecture du fichier ./src/data.json
|
|
fs.readFile('./src/data.json', 'utf8', (err, fileData) => {
|
|
let json = [];
|
|
if (!err && fileData) {
|
|
try {
|
|
json = JSON.parse(fileData);
|
|
} catch (e) {
|
|
console.error('Erreur de parsing JSON:', e);
|
|
}
|
|
}
|
|
// Ajout des nouvelles données au tableau
|
|
json.push(data);
|
|
|
|
// Réécriture du fichier avec les données mises à jour
|
|
fs.writeFile('./src/data.json', JSON.stringify(json, null, 2), (writeErr) => {
|
|
if (writeErr) {
|
|
console.error('Erreur d\'écriture:', writeErr);
|
|
return res.status(500).json({ success: false, message: 'Erreur lors de la sauvegarde' });
|
|
}
|
|
res.json({ success: true, message: 'Données sauvegardées' });
|
|
});
|
|
});
|
|
});
|
|
|
|
app.post('/api/getanswers', (req, res) => {
|
|
console.log('/api/getanswers');
|
|
|
|
const uniqueId = req.headers['x-unique-id'];
|
|
|
|
if (!uniqueId) {
|
|
console.log('Unique ID non fourni dans les en-têtes');
|
|
return res.status(400).send('Unique ID is required');
|
|
}
|
|
|
|
console.log('Unique ID reçu:', uniqueId);
|
|
|
|
const filePath = path.join(__dirname, './src/data.json');
|
|
|
|
fs.readFile(filePath, 'utf8', (err, data) => {
|
|
if (err) {
|
|
console.error('Erreur lors de la lecture du fichier ./src/data.json:', err);
|
|
res.status(500).send('Erreur lors de la lecture des données.');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
if (!data.trim()) {
|
|
console.log('Fichier ./src/data.json vide');
|
|
res.json([]);
|
|
return;
|
|
}
|
|
|
|
const jsonData = JSON.parse(data);
|
|
|
|
if (!Array.isArray(jsonData)) {
|
|
throw new Error('Le contenu de ./src/data.json n\'est pas un tableau');
|
|
}
|
|
|
|
// console.log('Données lues dans ./src/data.json:', JSON.stringify(jsonData, null, 2));
|
|
console.log('Données lues dans ./src/data.json....');
|
|
|
|
const filteredData = jsonData.filter(item => item.uniqueId === uniqueId);
|
|
|
|
// console.log('Données filtrées:', JSON.stringify(filteredData, null, 2));
|
|
|
|
if (filteredData.length === 0) {
|
|
console.log(`Aucune entrée trouvée avec l'uniqueId: ${uniqueId}`);
|
|
return res.status(404).send('Aucune donnée trouvée pour cet identifiant unique.');
|
|
}
|
|
|
|
|
|
// console.error("filteredData -------- "+filteredData.currentPath)
|
|
// Renvoie les données filtrées
|
|
res.json(filteredData);
|
|
|
|
} catch (parseError) {
|
|
console.error('Erreur lors de l\'analyse du JSON:', parseError);
|
|
res.status(500).send('Erreur lors de l\'analyse des données.');
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
app.post('/api/getresults', (req, res) => {
|
|
console.log('/api/getresults');
|
|
|
|
const uniqueId = req.headers['x-folder-name'];
|
|
|
|
if (!uniqueId) {
|
|
console.log('ID (getresults folder-name) non fourni dans les en-têtes');
|
|
return res.status(400).send('Unique ID is required');
|
|
}
|
|
|
|
console.log('ID folder-name:', uniqueId);
|
|
|
|
const filePath = path.join(__dirname, '/public/codes/', uniqueId, 'resultats.json');
|
|
console.log("---- filePath == "+filePath)
|
|
|
|
fs.readFile(filePath, 'utf8', (err, data) => {
|
|
if (err) {
|
|
console.error('Erreur lors de la lecture du fichier ./src/data.json:', err);
|
|
res.status(500).send('Erreur lors de la lecture des données.');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
if (!data.trim()) {
|
|
console.log('Fichier ./src/data.json vide');
|
|
res.json([]);
|
|
return;
|
|
}
|
|
|
|
const jsonData = JSON.parse(data);
|
|
|
|
if (!Array.isArray(jsonData)) {
|
|
throw new Error('Le contenu de ./src/data.json n\'est pas un tableau');
|
|
}
|
|
|
|
// console.log('Données lues dans ./src/data.json:', JSON.stringify(jsonData, null, 2));
|
|
console.log('Données lues dans ./src/data.json....');
|
|
|
|
const filteredData = jsonData.filter(item => item.uniqueId === uniqueId);
|
|
|
|
console.log('Données filtrées:', JSON.stringify(filteredData, null, 2));
|
|
|
|
if (filteredData.length === 0) {
|
|
console.log(`Aucune entrée trouvée avec l'uniqueId: ${uniqueId}`);
|
|
return res.status(404).send('Aucune donnée trouvée pour cet identifiant unique.');
|
|
}
|
|
|
|
|
|
// console.error("filteredData -------- "+filteredData.currentPath)
|
|
// Renvoie les données filtrées
|
|
res.json(filteredData);
|
|
|
|
} catch (parseError) {
|
|
console.error('Erreur lors de l\'analyse du JSON:', parseError);
|
|
res.status(500).send('Erreur lors de l\'analyse des données.');
|
|
}
|
|
});
|
|
}); /// /api/getresults
|
|
|
|
|
|
// Route pour lister uniquement les dossiers dans ./public/codes
|
|
app.get('/api/list-codes', (req, res) => {
|
|
const codesDir = path.join(__dirname, 'public', 'codes');
|
|
|
|
fs.readdir(codesDir, { withFileTypes: true }, (err, files) => {
|
|
if (err) {
|
|
console.error('Erreur lors de la lecture du dossier :', err);
|
|
return res.status(500).json({ success: false, message: 'Erreur lors de la lecture du dossier' });
|
|
}
|
|
|
|
// Filtrer uniquement les dossiers
|
|
const directories = files
|
|
.filter(file => file.isDirectory())
|
|
.map(directory => ({
|
|
name: directory.name,
|
|
path: path.join('public', 'codes', directory.name).replace(/\\/g, '/')
|
|
}));
|
|
|
|
res.json({ success: true, directories });
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
app.post('/api/savefile', (req, res) => {
|
|
|
|
console.log("/api/savefile/")
|
|
const { datatos, filepath, fileName, uniqueId_state, saveto } = req.body;
|
|
const fixpagename_html = (saveto=="direct") ? fileName.replace(".page",".html") : fileName;
|
|
|
|
const filepath_fix = path.join(__dirname, '/public/', filepath, "/data/", uniqueId_state+ "_"+ fixpagename_html);
|
|
console.log("saveto == "+saveto)
|
|
console.log(fileName)
|
|
console.log(filepath_fix)
|
|
console.log(fixpagename_html)
|
|
|
|
|
|
fs.writeFile(filepath_fix, datatos, (err) => {
|
|
if (err) {
|
|
console.error("Error saving file")
|
|
return res.status(500).send('Error saving file');
|
|
}
|
|
res.send('File saved successfully');
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const PORT = 4000;
|
|
app.listen(PORT, () => {
|
|
console.log(`API en écoute sur http://localhost:${PORT}`);
|
|
});
|