silvrgit/web-server.old.js

146 lines
4.6 KiB
JavaScript
Raw Normal View History

2016-03-08 21:52:21 +00:00
var express = require('express'), path = require('path'), http = require('http')
/* ,submit = require('./routes/mongo/submit') */
;
var app = express();
var lastcheck = 0;
var btcCache = {}, fxCache = {} , trainCache = {};
app.configure(function () {
app.set('port', process.env.PORT || 9000);
app.use(express.logger('dev'));
app.use(express.cookieParser());
app.use(express.session({secret: '1234567890QWERTY'}));
/* 'default', 'short', 'tiny', 'dev' */
app.use(express.methodOverride());
app.use(express.bodyParser());
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(express.errorHandler({dumpExceptions: true, showStack: true}));
app.use('/btc', function (req, res) {
console.log('Bitcoin request');
function btcQuery(callback, r) {
var req = r;
var options = {
host: 'api.coindesk.com',
// port: 80,
path: '/v1/bpi/currentprice.json',
// method: 'GET',
headers: {
/* 'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(data)*/
}
};
http.request(options).on('response', function (response) {
var data = '';
response.on("data", function (chunk) {
data += chunk;
});
response.on('end', function () {
callback(JSON.parse(data), r);
});
}).end();
}
var now = new Date();
if (now - lastcheck > (59000 )) {
btcQuery(function (a, b) {
console.log(a);
btcCache = a;
lastcheck = now;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(btcCache));
}, res)
}
else {
console.log("Using cache");
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(btcCache));
}
});
app.use('/fx', function (req, res) {
console.log('FX request');
function fxQuery(callback, r) {
var req = r;
var options = {
host: 'openexchangerates.org',
// port: 80,
path: '/api/latest.json?app_id=0eb932cee3bc40259f824d4b4c96c7d2',
// method: 'GET',
headers: {
/* 'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(data)*/
}
};
http.request(options).on('response', function (response) {
var data = '';
response.on("data", function (chunk) {
data += chunk;
});
response.on('end', function () {
callback(JSON.parse(data), r);
});
}).end();
}
var now = new Date();
if (now - lastcheck > (60000 * 14)) {
fxQuery(function (a, b) {
console.log(a);
fxCache = a;
lastcheck = now;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(fxCache));
}, res);
}
else {
console.log("Using cache");
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(fxCache));
}
});
app.use('/lot', function (req, res) {
var pg = require('pg');
var conString = "postgres://pguser:1V3D4m526i@localhost/silver";
console.log(conString);
var client = new pg.Client(conString);
var 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();
});
});
});
});
/**
* create the server
*/
http.createServer(app).listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});