mirror of
https://gitlab.silvrtree.co.uk/martind2000/old-silvrgit.git
synced 2025-01-10 17:45:07 +00:00
146 lines
4.6 KiB
JavaScript
146 lines
4.6 KiB
JavaScript
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'));
|
|
});
|