lio-tdi-client
v0.2.0
Published
A client for LIO Traveller Data Interface (TDI) endpoints with caching support.
Downloads
15
Maintainers
Readme
lio-tdi-client
A client for LIO Traveller Data Interface (TDI) endpoints with caching support.
Installation
npm install lio-tdi-client
Usage
// create a client
const createLioTdiClient = require('lio-tdi-client')
const endpoint = 'https://tdi.swu.de/tdinterface/'
const client = createLioTdiClient(endpoint)
// fetch stops as Buffer
const stopsBuf = await client.stops({asBuffer: true})
// decode stops Buffer
const {StopTdiArray} = require('lio-tdi-client/pbf').mhcc.app.dataprovider.model.tdiinterface.dstructs
console.log(StopTdiArray.decode(pbf, stopsBuf))
{
stopTdiArray: [
{
duid: {low: 798, high: 14164742, unsigned: false},
lastModificationTimestamp: {low: 2034426655, high: 371, unsigned: false},
isDeleted: false,
number: {low: 2871, high: 0, unsigned: true},
shortName: 'GZAW',
longName: 'Günzburg Abz Wasserburg',
latitude: 174435185,
longitude: 36965635,
altitude: {low: 2147483646, high: 0, unsigned: true},
},
{
duid: {low: 799, high: 14164742, unsigned: false},
lastModificationTimestamp: {low: 2034426655, high: 371, unsigned: false},
isDeleted: false,
number: {low: 3466, high: 0, unsigned: true},
shortName: 'LEBS',
longName: 'Leipheim Bahnhofstraße',
latitude: 174416238,
longitude: 36784764,
altitude: {low: 2147483646, high: 0, unsigned: true},
},
// …
]
}
Observing data changes
lio-tdi-client
comes with a helper, which periodically polls client.version()
to check if the endpoint's data version has changed. Use it to find out when to
const observeDataVersion = require('lio-tdi-client/observe')
observeDataVersion(client, (err, version) => {
if (err) {
console.error(err)
return;
}
console.log('new data version', version)
// refetch actual data here, e.g. client.stops()
})
observeDataVersion(client, opt = {}, cb)
takes an optional 2nd parameter opt
, which overrides the following defaults:
{
minInterval: 1_000, // start checking every 1s
factor: 2, // multiply interval whenever the version hasn't changed
maxInterval: 15_000, // always check at least every 15s
}
Contributing
If you have a question or need support using lio-tdi-client
, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, use the issues page.