-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
89 lines (74 loc) · 2.91 KB
/
app.js
File metadata and controls
89 lines (74 loc) · 2.91 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
// app.js
const express = require('express');
const path = require('path');
const configManager = require('./services/configManager'); // Gardé pour la route /api/
const cronService = require('./services/cronService');
const { V, O } = require('./utils/icons');
const session = require('express-session');
const crypto = require('crypto');
const probeVersion = require('./package.json').version;
console.log(`${O.green} Starting !`, probeVersion);
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware pour parser le JSON
app.use(express.json({ limit: '100mb' }));
// Middleware de session (DOIT être avant les routes qui l'utilisent)
app.use(session({
secret: crypto.randomBytes(64).toString('hex'), // Secret de production, généré aléatoirement
resave: false,
saveUninitialized: true,
cookie: { secure: false } // Mettre à `true` si vous utilisez HTTPS
}));
// Middleware pour les logs des requêtes
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
console.log(`Call API [${timestamp}] ${req.method} ${req.path}`);
next();
});
// Import des routes
const routes = require('./routes/index');
const stationRoutes = require('./routes/stationRoutes');
const queryDbRoutes = require('./routes/queryDbRoutes');
// Configuration des routes
app.use('/', routes);
// Route racine
// Géré par routes/index.js
// Middleware de gestion des erreurs 404
app.use((req, res) => {
res.status(404).json({
success: false,
error: 'Route non trouvée',
path: req.path,
method: req.method,
message: 'Consultez la documentation des endpoints disponibles sur /'
});
});
// Middleware de gestion des erreurs globales
app.use((err, req, res, next) => {
console.error(`${V.error} Erreur non gérée:`, err);
res.status(500).json({
success: false,
error: 'Erreur interne du serveur',
message: process.env.NODE_ENV === 'development' ? err.message : 'Une erreur est survenue'
});
});
// Vérification de l'existence du répertoire de configuration au démarrage
const configDir = path.resolve(__dirname, 'config/stations');
console.log(`${V.loading} Répertoire de configuration: ${configDir}`);
// Lance le serveur
if (require.main === module) {
app.listen(PORT, () => {
console.log(`${V.StartFlag} Serveur Probe démarré sur le port ${PORT}`);
console.log(`${V.info} Environnement: ${process.env.NODE_ENV || 'development'}`);
console.log(`${V.satellite} Stations: http://localhost:${PORT}/api/stations`);
if (process.env.watch) {
console.log(`${V.Gyro} Watch mode: ${process.env.watch}`);
}
if (process.env.ignore_watch) {
console.log(`${V.Travaux} Ignore watch: ${process.env.ignore_watch}`);
}
// Initialise toutes les tâches cron planifiées au démarrage
cronService.initializeAllJobs();
});
}
module.exports = app;