Merge branch 'master' into feat/oscfeedback

This commit is contained in:
Carlos Valente
2021-06-14 10:18:24 +02:00
committed by GitHub
78 changed files with 3638 additions and 3444 deletions
+81 -34
View File
@@ -1,11 +1,22 @@
// get config
// get environment vars
import 'dotenv/config.js';
import { sessionId, user } from './utils/analytics.js';
user.screenview('Node service', 'ontime').send();
user.event('NODE', 'started', 'starting node service').send();
import { config } from './config/config.js';
// init database
import { Low, JSONFile } from 'lowdb';
import { join } from 'path';
const file = join('data/', config.database.filename);
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const env = process.env.NODE_ENV || 'prod';
const file = path.join(__dirname, 'data/', config.database.filename);
const adapter = new JSONFile(file);
export const db = new Low(adapter);
@@ -15,6 +26,7 @@ import express from 'express';
import http from 'http';
import cors from 'cors';
import { dbModel } from './data/dataModel.js';
import ua from 'universal-analytics';
// Read data from JSON file, this will set db.data content
await db.read();
@@ -35,9 +47,6 @@ import { router as eventsRouter } from './routes/eventsRouter.js';
import { router as eventRouter } from './routes/eventRouter.js';
import { router as ontimeRouter } from './routes/ontimeRouter.js';
// Setup default port
const port = process.env.PORT || config.server.port;
// Global Objects
import { EventTimer } from './classes/EventTimer.js';
@@ -51,52 +60,90 @@ app.use(cors());
app.options('*', cors());
// Implement middleware
app.use('/uploads', express.static('uploads'));
app.use(ua.middleware(process.env.ANALYTICS_ID, sessionId));
app.use(express.urlencoded({ extended: true }));
app.use(express.json({ limit: '1mb' }));
app.use('/uploads', express.static('uploads'));
// Implement route endpoints
app.use('/events', eventsRouter);
app.use('/event', eventRouter);
app.use('/ontime', ontimeRouter);
// implement general router
app.get('/', (req, res) => {
res.send('ontime API');
// serve react
app.use(
express.static(
path.join(__dirname, env == 'prod' ? '../' : '../../', 'client/build')
)
);
app.get('*', (req, res) => {
res.sendFile(
path.resolve(
__dirname,
env == 'prod' ? '../' : '../../',
'client',
'build',
'index.html'
)
);
});
// Implement route for errors
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
res.status(500).send(err.stack);
});
// create HTTP server
const server = http.createServer(app);
// Start OSC Client
let oscClient = null;
export const startOSCClient = (overrideConfig = null) => {
// Setup IP
const ipOut = overrideConfig?.ip || config.osc.ipOut;
export const startServer = (overrideConfig = null) => {
// Setup default port
const oscOutPort = overrideConfig?.port || config.osc.portOut;
oscClient = new Client(ipOut, oscOutPort);
console.log(`OSC Client sending to ${ipOut}:${oscOutPort}`);
const serverPort = overrideConfig?.port || config.server.port;
// Start server
const returnMessage = `HTTP Server is listening on port ${serverPort}`;
server.listen(serverPort, '0.0.0.0', () => console.log(returnMessage));
// init timer
global.timer = new EventTimer(server, config);
global.timer.setupWithEventList(data.events);
return returnMessage;
};
startOSCClient();
// init timer
global.timer = new EventTimer(server, oscClient, config);
global.timer.setupWithEventList(data.events);
// Start server
server.listen(port, () =>
console.log(`HTTP Server is listening on port ${port}`)
);
// Start OSC server
import { initiateOSC } from './controllers/OscController.js';
initiateOSC(config.osc);
import { initiateOSC, shutdownOSCServer } from './controllers/OscController.js';
export const startOSCServer = (overrideConfig = null) => {
// Setup default port
const oscInPort = overrideConfig?.port || config.osc.port;
initiateOSC(config.osc);
};
export const startOSCClient = (overrideConfig = null) => {
// Setup default port
const oscOutPort = overrideConfig?.port || config.osc.portOut;
console.log('initialise OSC Client at port: ', oscOutPort);
};
export const shutdown = () => {
console.log('Node service shutdown');
user.event('NODE', 'shutdown', 'requesting node shutfown').send();
// shutdown express server
server.close();
// shutdown OSC Server
shutdownOSCServer();
// shutdown OSC Client
// shutdown timer
global.timer.shutdown();
};
if (env == 'development') {
startServer();
startOSCClient();
}