Amélioration avec des fonctions d'un vrai dashboard automotive et containerisation du projet pour faciliter le déploiement
This commit is contained in:
+14
-2
@@ -3,12 +3,20 @@ import { readFile } from 'node:fs/promises';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { resolve } from 'node:path';
|
||||
import { telemetry, profiles } from './telemetry.mjs';
|
||||
import { createServices } from './services.mjs';
|
||||
|
||||
const assets = new Map([
|
||||
['/', ['index.html', 'text/html']], ['/index.html', ['index.html', 'text/html']],
|
||||
['/app.js', ['app.js', 'text/javascript']], ['/styles.css', ['styles.css', 'text/css']]
|
||||
['/app.js', ['app.js', 'text/javascript']], ['/styles.css', ['styles.css', 'text/css']],
|
||||
...['journey.js', 'geo.js', 'theme.js', 'applications.js', 'cockpit.js', 'embeds.js'].map(name => [`/${name}`, [name, 'text/javascript']]),
|
||||
['/cockpit.css', ['cockpit.css', 'text/css']],
|
||||
['/applications.css', ['applications.css', 'text/css']],
|
||||
['/journey.css', ['journey.css', 'text/css']],
|
||||
['/vendor/leaflet/leaflet.js', ['vendor/leaflet/leaflet.js', 'text/javascript']],
|
||||
['/vendor/leaflet/leaflet.css', ['vendor/leaflet/leaflet.css', 'text/css']]
|
||||
]);
|
||||
export function createServer() {
|
||||
export function createServer(options) {
|
||||
const services = createServices(options);
|
||||
return http.createServer(async (req, res) => {
|
||||
res.setHeader('X-Content-Type-Options', 'nosniff');
|
||||
res.setHeader('Cache-Control', 'no-store');
|
||||
@@ -23,6 +31,10 @@ export function createServer() {
|
||||
const profile = url.searchParams.get('profile') || 'route';
|
||||
return profiles.includes(profile) ? send(200, telemetry(profile)) : send(400, { error: 'Profil inconnu' });
|
||||
}
|
||||
if (url.pathname.startsWith('/api/')) {
|
||||
try { return send(200, await services(url.pathname, url.searchParams)); }
|
||||
catch (error) { return send(error.status || 502, { error: error.status ? error.message : 'Service indisponible' }); }
|
||||
}
|
||||
const asset = assets.get(url.pathname);
|
||||
if (!asset) return send(404, { error: 'Introuvable' });
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user