simple-hafas/server.js
2019-11-01 18:59:48 +01:00

81 lines
2.3 KiB
JavaScript

const createClient = require('hafas-client')
const insaProfile = require('hafas-client/p/insa')
var express = require("express");
var app = express();
const port = 3000
const client = createClient(insaProfile, 'my-awesome-program')
function printResult(departures,respdata) {
let outstr = ""
departures.forEach(element => {
let delay = ""
if (element['delay'] != 0) {
delay = element['delay'] / 60
}
outstr += (cutPadString(element['line']['id'], 4).toUpperCase() + " " + cutPadString(element['direction'], 20) + " " + cutPadString(getTime(element['when']), 6) + delay + "\n")
respdata['departures'].push({
"line": element['line']['id'],
"direction": element['direction'],
"time": getTime(element['when']),
"delay": delay
})
});
return respdata;
}
async function getNearestStationDepartures(lat, lon) {
var queryPromise = client.nearby({
type: 'location',
latitude: lat,
longitude: lon
}, {
distance: 400
})
var result = await queryPromise
var respdata = { "name" : result[0]['name'],
"departures" : [] }
var queryPromise2 = client.departures(result[0]['id'])
var departures = await queryPromise2
return printResult(departures,respdata)
}
function getTime(stringTime) {
let d = new Date(stringTime)
return String(d.getHours()).padStart(2, "0") + ":" + String(d.getMinutes()).padStart(2, "0")
}
function cutPadString(string, length) {
let outstring = ""
if (string.length > length) {
outstring = string.substring(0, length - 3) + "..."
} else {
if (string.length < length) {
outstring = string.padEnd(length)
} else {
outstring = string
}
}
return outstring
}
app.get('/', (req, res) => res.send('Hello World!'))
// Parse JSON bodies (as sent by API clients)
app.use(express.json());
// Access the parse results as request.body
app.post('/', function (request, response) {
console.log(request.body.lat);
console.log(request.body.lon);
getNearestStationDepartures(request.body.lat, request.body.lon)
.then((result) => {
response.send(result)
})
.catch(console.log("Error."))
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))