db-vendo-client/readme.md

158 lines
3.9 KiB
Markdown
Raw Normal View History

2016-06-22 01:39:04 +02:00
# hafas-client
2017-11-13 00:38:09 +01:00
**A client for HAFAS public transport APIs**. Sort of like [public-transport-enable](https://github.com/schildbach/public-transport-enabler), but with a smaller scope. It also has customisations for the following transport networks:
- [Deutsche Bahn](https://en.wikipedia.org/wiki/Deutsche_Bahn) [src](p/db/index.js)
2016-06-22 01:39:04 +02:00
[![npm version](https://img.shields.io/npm/v/hafas-client.svg)](https://www.npmjs.com/package/hafas-client)
[![build status](https://img.shields.io/travis/derhuerst/hafas-client.svg)](https://travis-ci.org/derhuerst/hafas-client)
![ISC-licensed](https://img.shields.io/github/license/derhuerst/hafas-client.svg)
2017-02-27 16:51:09 +01:00
[![chat on gitter](https://badges.gitter.im/derhuerst.svg)](https://gitter.im/derhuerst)
2016-06-22 01:39:04 +02:00
2017-11-13 00:38:09 +01:00
## Background
There's [a company called HaCon](http://hacon.de) that sells [a public transport management system called HAFAS](https://de.wikipedia.org/wiki/HAFAS). It is [used by companies all over Europe](https://gist.github.com/derhuerst/2b7ed83bfa5f115125a5) to server routing and departure information for apps. All those endpoints are similar, with the same terms and API routes, but have slightly different options, filters and enable features.
`hafas-client` contains all logic for communicating with these, as well as serialising from and parsing to [FPTF](https://github.com/public-transport/friendly-public-transport-format). Endpoint-specific customisations increase the quality of the returned data.
2016-06-22 01:39:04 +02:00
## Installing
```shell
npm install hafas-client
```
## Usage
2017-11-11 21:06:54 +01:00
```
2017-11-13 00:38:09 +01:00
const createClient = require('hafas-client')
const dbProfile = require('hafas-client/p/db')
const client = createClient(dbProfile)
// Berlin Jungfernheide to München Hbf
client.journeys('8011167', '8000261', {results: 1})
.then(console.log)
.catch(console.error)
```
```js
[ {
origin: {
type: 'station',
id: '8089100',
name: 'Berlin Jungfernheide (S)',
coordinates: {
latitude: 52.530291,
longitude: 13.299451
},
products: { /* … */ }
},
departure: '2017-11-13T01:00:00Z',
destination: {
type: 'station',
id: '8000261',
name: 'München Hbf',
coordinates: {
latitude: 48.140364,
longitude: 11.558735
},
products: { /* … */ }
},
arrival: '2017-11-13T09:39:00Z',
parts: [ {
id: '1|1436339|0|80|12112017',
origin: {
type: 'station',
id: '8089100',
name: 'Berlin Jungfernheide (S)',
coordinates: {
latitude: 52.530291,
longitude: 13.299451
},
products: {
nationalExp: false,
national: false,
regionalExp: false,
regional: true,
suburban: true,
bus: true,
ferry: false,
subway: true,
tram: false,
taxi: false
}
},
departure: '2017-11-13T00:50:00Z',
departurePlatform: '6',
destination: {
type: 'station',
id: '8089047',
name: 'Berlin Westkreuz',
coordinates: {
latitude: 52.500752,
longitude: 13.283854
},
products: {
nationalExp: false,
national: false,
regionalExp: false,
regional: true,
suburban: true,
bus: true,
ferry: false,
subway: false,
tram: false,
taxi: false
}
},
arrival: '2017-11-13T00:57:00Z',
delay: 0,
line: {
type: 'line',
name: 'S 42',
mode: 'train',
product: 'suburban',
class: 16,
productCode: 4,
productName: 's'
},
direction: 'Ringbahn <-',
arrivalPlatform: '12'
}, {
id: '1|332491|0|80|12112017',
origin: { /* … */ },
departure: '2017-11-13T01:05:00Z',
departurePlatform: '3',
destination: { /* … */ },
arrival: '2017-11-13T01:18:00Z',
delay: 0,
line: { /* … */ },
direction: 'Berlin Ostbahnhof'
}, {
origin: { /* … */ },
departure: '2017-11-13T01:18:00Z',
destination: { /* … */ },
arrival: '2017-11-13T01:26:00Z',
mode: 'walking'
}, {
/* … */
} ]
} ]
2017-11-11 21:06:54 +01:00
```
2016-06-22 01:39:04 +02:00
## Contributing
If you **have a question**, **found a bug** or want to **propose a feature**, have a look at [the issues page](https://github.com/derhuerst/hafas-client/issues).