SEND all files + questionnaires + json + data_tests
This commit is contained in:
216
index_api.js
Normal file
216
index_api.js
Normal file
@@ -0,0 +1,216 @@
|
||||
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}`);
|
||||
});
|
||||
Reference in New Issue
Block a user