const express = require('express'); const path = require('path'); const server = require('http').createServer(); const fx = require('./lib/fx'); const btc = require('./lib/btc'); const train = require('./lib/train'); const password = require('./lib/password'); const clean = require('./lib/clean'); const events = require('./lib/events'); const morgan = require('morgan'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const methodoverride = require('method-override'); const bodyparser = require('body-parser'); const errorhandler = require('errorhandler'); const jsonfile = require('jsonfile'); const Events = require('events'); let busEmitter = new Events.EventEmitter(); const WebSocketServer = require('ws').Server; const wss = new WebSocketServer({server: server}); const SocketHandler = require('./lib/wshandlerv2'); let webSocket = new SocketHandler(busEmitter, wss); // train = require('lib/train') /* ,submit = require('./routes/mongo/submit') */ let fs = require('fs'); const config = require('./config/config.json'); const Fitbit = require('fitbit-oauth2'); const polys = require('./lib/poly.js'); const logger = require('log4js').getLogger(); const app = express(); global.lastcheck = 0; let btcCache = {}, fxCache = {}, trainCache = {}; const port = process.env.PORT || 9010; // app.configure(function () { app.set('port', port); app.set('view engine', 'ejs'); app.use(morgan('dev')); app.use(cookieParser('your secret here')); app.use(session({ secret: 'd2jRT6ZpYFsXsF3kGS21ZszKbPAaEa', resave: false, saveUninitialized: false })); /* 'default', 'short', 'tiny', 'dev' */ app.use(methodoverride()); app.use(bodyparser.urlencoded({extended: false})); // parse application/json app.use(bodyparser.json()); app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'X-Requested-With'); next(); }); // app.use(app.router); app.use(express.static(path.join(__dirname, 'app'))); app.use(errorhandler({dumpExceptions: true, showStack: true})); app.use('/btc', btc.doBTC); app.use('/fx', fx.doFx); app.use('/dbeglq', train.dbe_glq); app.use('/glqdbe', train.glq_dbe); app.use('/gettrains', train.getTrainTimes); app.use('/getnexttraintimes', train.getNextTrainTimes); app.use('/getroute', train.getRoute); app.use('/generate', password.generate); app.use('/cleanit', clean.cleanit); app.use('/events', events.getEvents); app.get('/cinema/:id', events.getCinema); app.route('/poly').get(polys); /*app.use('/lot', function(req, res) { const pg = require('pg'); const conString = 'postgres://pguser:1V3D4m526i@localhost/silver'; console.log(conString); const client = new pg.Client(conString); const q = 'select * from lot order by d desc'; client.connect(function(err) { if (err) { return console.error('could not connect to postgres', err); } client.query(q, function(err, result) { if (err) { return console.error('error running query', err); } console.log(result.rows[0].theTime); // output: Tue Jan 15 2013 19:12:47 GMT-600 (CST) client.end(); }); }); });*/ app.get('/slack', function(req, res) { res.render('pages/slackV2'); }); app.get('/temp', function(req, res) { res.render('pages/temp'); }); const tfile = 'fb-token.json'; // Instanciate a fitbit client. See example config below. // const fitbit = new Fitbit(config.fitbit); // In a browser, http://localhost:4000/fitbit to authorize a user for the first time. // app.get('/fitbit', function(req, res) { res.redirect(fitbit.authorizeURL()); }); // Callback service parsing the authorization token and asking for the access token. This // endpoint is refered to in config.fitbit.authorization_uri.redirect_uri. See example // config below. // app.get('/fitbit_auth_callback', function(req, res, next) { const code = req.query.code; fitbit.fetchToken(code, function(err, token) { if (err) { return next(err); } // persist the token jsonfile.writeFile(tfile, token, function(err) { if (err) { return next(err); } console.log('!!!! Fitbit token saved'); res.redirect('/fb-profile'); }); }); }); jsonfile.readFile('./fb-token.json', function(err, obj) { if (err) { logger.error(err); } else { fitbit.setToken(obj); } }); // }); /** * create the server */ /* http.createServer(app).listen(app.get('port'), function () { logger.warn("Express server listening on port " + app.get('port')); //console.log("Express server listening on port " + app.get('port')); }); */ server.on('request', app); server.listen(port, () => { logger.info('New server listening on ' + server.address().port); });