mirror of
https://gitlab.silvrtree.co.uk/martind2000/old-silvrgit.git
synced 2025-01-10 20:45:08 +00:00
182 lines
6.0 KiB
JavaScript
182 lines
6.0 KiB
JavaScript
// train.js
|
|
var http = require('http');
|
|
var trainCache = {
|
|
last: {},
|
|
data: {}
|
|
};
|
|
|
|
module.exports = {
|
|
|
|
|
|
|
|
dbe_glq: function (req, res) {
|
|
|
|
console.log('DBE:GLQ request');
|
|
|
|
var now = new Date();
|
|
var nowSeconds = (now.getHours() * (60 * 60)) + (now.getMinutes() * 60);
|
|
console.log('Now Seconds: ' + nowSeconds);
|
|
if (trainCache.last.dbeglq == null || nowSeconds != trainCache.last.dbeglq) {
|
|
Query(function (a, b) {
|
|
|
|
var ts = a.departures[0].service;
|
|
var output = {};
|
|
console.log(ts);
|
|
|
|
console.log(ts.sta);
|
|
|
|
|
|
output.sta = ts.sta;
|
|
output.eta = ts.eta;
|
|
trainCache.data.dbeglq = output;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify(trainCache.data.dbeglq));
|
|
}, res, 'huxley.apphb.com', '/next/dbe/to/glq/1?accessToken=215b99fe-b237-4a01-aadc-cf315d6756d8');
|
|
|
|
}
|
|
},
|
|
glq_dbe: function (req, res) {
|
|
|
|
console.log('GLQ:DBE request');
|
|
|
|
var now = new Date();
|
|
var nowSeconds = (now.getHours() * (60 * 60)) + (now.getMinutes() * 60);
|
|
console.log('Now Seconds: ' + nowSeconds);
|
|
if (trainCache.last.glqdbe == null || nowSeconds != trainCache.last.dbeglq) {
|
|
Query(function (a, b) {
|
|
|
|
var ts = a.departures[0].service;
|
|
var output = {};
|
|
console.log(ts);
|
|
//GLOBAL.lastcheck = now;
|
|
console.log(ts.sta);
|
|
console.log(toSeconds(ts.sta));
|
|
|
|
output.sta = ts.sta;
|
|
output.eta = ts.eta;
|
|
trainCache.data.glqdbe = output;
|
|
// trainCache.last.glqdbe = toSeconds(ts.sta);
|
|
// console.log(ts);
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify(trainCache.data.glqdbe));
|
|
}, res, 'huxley.apphb.com', '/next/glq/to/dbe/1?accessToken=215b99fe-b237-4a01-aadc-cf315d6756d8');
|
|
|
|
}
|
|
},
|
|
getTrainTimes: function(req, res) {
|
|
// console.log(req);
|
|
console.log('getTrainTimes: ' + JSON.stringify(req.query));
|
|
if (req.query.hasOwnProperty('from') && req.query.hasOwnProperty('from'))
|
|
{
|
|
|
|
var url = '/all/' + req.query.from + '/to/' + req.query.to + '/10?accessToken=215b99fe-b237-4a01-aadc-cf315d6756d8';
|
|
|
|
Query(function (a, b) {
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify(a));
|
|
}, res, 'huxley.apphb.com', url);
|
|
}
|
|
else{
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify({}));
|
|
}
|
|
|
|
},
|
|
getNextTrainTimes: function(req, res) {
|
|
console.log('getNextTrainTimes: ' + JSON.stringify(req.query));
|
|
var trainFrom, trainTo, trainToken, url;
|
|
if (req.query.hasOwnProperty('from') && req.query.hasOwnProperty('from')) {
|
|
trainFrom = req.query.from;
|
|
trainTo = req.query.to;
|
|
trainToken = trainFrom + trainTo;
|
|
url = '/next/' + trainFrom + '/to/' + trainTo + '/1?accessToken=215b99fe-b237-4a01-aadc-cf315d6756d8';
|
|
console.log('Requesting latest time for : ' + trainToken);
|
|
|
|
var now = new Date();
|
|
var nowSeconds = (now.getHours() * (60 * 60)) + (now.getMinutes() * 60);
|
|
console.log('Now Seconds: ' + nowSeconds);
|
|
if (trainCache.last[trainToken] == null || nowSeconds != trainCache.last[trainToken]) {
|
|
|
|
Query(function (a, b) {
|
|
|
|
var output = {};
|
|
var ts = a.departures[0].service;
|
|
if ( ts !== null)
|
|
{
|
|
// console.log(ts);
|
|
//GLOBAL.lastcheck = now;
|
|
console.log(ts.sta);
|
|
console.log(toSeconds(ts.sta));
|
|
|
|
output.sta = ts.sta;
|
|
output.eta = (ts.eta !== null ? ts.eta : ts.sta);
|
|
// trainCache.last.glqdbe = toSeconds(ts.sta);
|
|
// console.log(ts);
|
|
} else
|
|
{
|
|
console.log('*** NO SERVICE');
|
|
output.sta = 'No Service';
|
|
output.eta = 'No Service';
|
|
}
|
|
|
|
trainCache.data[trainToken] = output;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify(trainCache.data[trainToken]));
|
|
}, res, 'huxley.apphb.com', url);
|
|
|
|
}
|
|
}
|
|
|
|
}, getRoute: function(req, res) {
|
|
console.log('getRoute: ' + JSON.stringify(req.query));
|
|
var routeID, data={};
|
|
if (req.query.hasOwnProperty('route')) {
|
|
|
|
routeID = req.query.route;
|
|
Query(function (a, b) {
|
|
|
|
if (a !== null && a.message === null) {
|
|
data = a;
|
|
}
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify(data));
|
|
}, res, 'huxley.apphb.com', '/service/' + routeID + '?accessToken=215b99fe-b237-4a01-aadc-cf315d6756d8');
|
|
}
|
|
|
|
}
|
|
};
|
|
|
|
function toSeconds(inval) {
|
|
var a = inval.split(':');
|
|
return ((parseInt(a[0]) * (60 * 60)) + (parseInt(a[1]) * 60));
|
|
|
|
}
|
|
|
|
function Query(callback, r, host, path) {
|
|
console.log(path);
|
|
var req = r;
|
|
var options = {
|
|
host: host,
|
|
// port: 80,
|
|
path: path,
|
|
//method: 'GET',
|
|
headers: {}
|
|
};
|
|
|
|
try {
|
|
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();
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|