lpio
Version:
The last dashboard app you'll ever need
81 lines (65 loc) • 2.16 kB
JavaScript
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var bodyParser = require('body-parser');
var serveStatic = require('serve-static');
var Q = require('q');
/* local stuff */
var config = require('./config');
var database = require('./database');
var realtime = require('./realtime');
var log = require('./log');
/* Routes */
var dashboards = require('./routes/v1/dashboards');
var widgets = require('./routes/v1/widgets');
var send = require('./routes/v1/send');
/* static files */
var path = require('path'),
__staticDir = path.resolve(__dirname,'app');
app.use(serveStatic(__staticDir));
app.use(bodyParser.json({}));
/* Dashboards */
app.get('/v1/dashboard/_all', dashboards.getAllDashboards);
app.post('/v1/dashboard', dashboards.createDashboard);
app.get('/v1/dashboard/:id', dashboards.getDashboardByID);
app.put('/v1/dashboard/:id', dashboards.updateDashboard);
app.delete('v1/dashboard/:id',dashboards.deleteDashboard);
/* Widgets */
app.post('/v1/widget', widgets.createWidget);
app.get('/v1/widget/:id', widgets.getWidgetByID);
app.put('/v1/widget/:id', widgets.updateWidget);
app.delete('v1/widget/:id', widgets.deleteWidget);
/* Send endpoint */
app.post('/v1/send/:widget_id',send.send);
app.use(function errorHandler(err, req, res, next) {
if (!err){
return next();
}
log.error(err);
var response = { status: "error", message : err.message};
res.status(err.resCode || 500);
if(err.message == "Not Found"){
err.resCode = 404;
}
if(err.errors !== undefined){
response.errors = err.errors;
}
if(err.errorReference !== undefined){
response.errorReference = err.errorReference;
}
res.json(response);
});
exports.start = function(){
var defer = Q.defer();
server.listen(config.app_settings.port, function(err){
if(err){
defer.reject(err);
}
log.info("Started server on "+config.app_settings.port);
defer.resolve(true);
});
io.on('connection', function (socket) {
realtime.start(io,socket);
});
return defer.promise;
}