Skip to content
This repository has been archived by the owner on Feb 2, 2023. It is now read-only.

drupol/irail-api

Repository files navigation

iRail-api

Query the iRail.be API. Fully JS promises ready.

irail.be is a plaform providing open data about train transportation in Belgium. It has an API and this library helps you to query it.

To improve performances, requests caching is enabled by default when it's needed, using the host OS cache(tmp) directory.

Usage

var irailApi = require('irail-api');

// Get the stations.
irailApi.getStations().then(console.log);

Available methods

  • getStations
  • getLiveboard
  • getConnections
  • getVehicle
  • getDisturbances
  • getLogs

Each methods takes a object of parameters. The list of parameters for each method can be found on the irail API documentation site.

The default parameters are:

  • format set to json
  • lang set to en

Goodies

This package provides extra methods and information that are not provided on iRail by default.

To get train stations and their associated lines, you can use the helpers.

var irailApi = require('irail-api');

// Get the stations with their lines.
irailApi.getStations().then(irailApi._processStations).then((stations) => {
  return irailApi.helpers.addStationLines(stations);
}).map(console.log);

Output:

[{ id: 'BE.NMBS.008884541',
  locationX: '3.856543',
  locationY: '50.449827',
  '@id': 'http://irail.be/stations/NMBS/008884541',
  standardname: 'Quaregnon',
  name: 'Quaregnon',
  wikidata:
   { connecting_line:
      [ { exact_match:
           { type: 'uri',
             value: 'http://irail.be/stations/NMBS/008884541' },
          lineLabel:
           { 'xml:lang': 'en',
             type: 'literal',
             value: 'Line 97 (Infrabel)' },
          lineUrl:
           { type: 'uri',
             value: 'http://www.wikidata.org/entity/Q1891285' } } ] } }
...]

It is possible to chain them as well

var irailApi = require('irail-api');

irailApi.getStations().then(irailApi._processStations).then((stations) => {
  return irailApi.helpers.addStationLines(stations);
}).then((stations) => {
  return irailApi.helpers.addAdjacentStations(stations);
}).map(console.log);

Output:

[{ id: 'BE.NMBS.008884541',
   locationX: '3.856543',
   locationY: '50.449827',
   '@id': 'http://irail.be/stations/NMBS/008884541',
   standardname: 'Quaregnon',
   name: 'Quaregnon',
   wikidata: 
    { connecting_line: 
       [ { exact_match:
            { type: 'uri',
              value: 'http://irail.be/stations/NMBS/008884541' },
           lineLabel:
            { 'xml:lang': 'en',
              type: 'literal',
              value: 'Line 97 (Infrabel)' },
           lineUrl:
            { type: 'uri',
              value: 'http://www.wikidata.org/entity/Q1891285' } } ],
      adjacent_station:
       [ { exact_match:
            { type: 'uri',
              value: 'http://irail.be/stations/NMBS/008884541' },
           adjacent_stationLabel:
            { 'xml:lang': 'en',
              type: 'literal',
              value: 'Jemappes railway station' },
           adjacent_stationUrl:
            { type: 'uri',
              value: 'http://www.wikidata.org/entity/Q2411271' } },
         { exact_match:
            { type: 'uri',
              value: 'http://irail.be/stations/NMBS/008884541' },
           adjacent_stationLabel:
            { 'xml:lang': 'en',
              type: 'literal',
              value: 'Saint-Ghislain railway station' },
           adjacent_stationUrl:
            { type: 'uri',
              value: 'http://www.wikidata.org/entity/Q3097536' } } ] } }
...]

About

Query the iRail.be API. Fully JS promises ready.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published