silvrgit/serverV2.js
2017-04-05 14:22:31 +01:00

200 lines
4.7 KiB
JavaScript

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); });