UNPKG

lpio

Version:

The last dashboard app you'll ever need

81 lines (65 loc) 2.16 kB
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; }