db-vendo-client/readme.md

177 lines
6.6 KiB
Markdown
Raw Normal View History

2016-06-22 01:39:04 +02:00
# hafas-client
2017-12-17 17:42:50 +01:00
**A client for HAFAS public transport APIs**. Sort of like [public-transport-enabler](https://github.com/schildbach/public-transport-enabler), but with a smaller scope. It also [contains customisations](p) for the following transport networks:
2017-11-13 00:38:09 +01:00
2017-12-29 10:05:54 +01:00
- [Deutsche Bahn (DB)](https://en.wikipedia.org/wiki/Deutsche_Bahn) - [docs](p/db/readme.md) [usage example](p/db/example.js) [src](p/db/index.js)
- [Berlin public transport (VBB)](https://en.wikipedia.org/wiki/Verkehrsverbund_Berlin-Brandenburg) - [docs](p/vbb/readme.md) [usage example](p/vbb/example.js) [src](p/vbb/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
2017-11-18 10:14:17 +01:00
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 serve 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.
2017-11-13 00:38:09 +01:00
`hafas-client` contains all logic for communicating with these, as well as serialising from and parsing to [*Friendly Public Transport Format (FPTF)* `1.0.1`](https://github.com/public-transport/friendly-public-transport-format/blob/1.0.1/spec/readme.md). Endpoint-specific customisations (called "profiles" here) increase the quality of the returned data.
2017-11-13 00:38:09 +01:00
2016-06-22 01:39:04 +02:00
## Installing
```shell
npm install hafas-client
```
2017-12-18 12:00:06 +01:00
## API
- [`journeys(from, to, [opt])`](docs/journeys.md) get journeys between locations
- [`journeyLeg(ref, name, [opt])`](docs/journey-leg.md) get details for a leg of a journey
2017-12-18 12:00:06 +01:00
- [`departures(station, [opt])`](docs/departures.md) query the next departures at a station
- [`locations(query, [opt])`](docs/locations.md) find stations, POIs and addresses
- [`nearby(latitude, longitude, [opt])`](docs/nearby.md) show stations & POIs around
- [`radar(query, [opt])`](docs/radar.md) find all vehicles currently in a certain area
2016-06-22 01:39:04 +02:00
## Usage
2017-11-18 10:14:17 +01:00
```js
2017-11-13 00:38:09 +01:00
const createClient = require('hafas-client')
const dbProfile = require('hafas-client/p/db')
// create a client with Deutsche Bahn profile
2017-11-13 00:38:09 +01:00
const client = createClient(dbProfile)
// Berlin Jungfernheide to München Hbf
client.journeys('8011167', '8000261', {results: 1})
.then(console.log)
.catch(console.error)
```
The returned [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/promise) will resolved with an array of one `journey` in the [*FPTF* `1.0.1`](https://github.com/public-transport/friendly-public-transport-format/blob/1.0.1/spec/readme.md).
2017-11-13 00:38:09 +01:00
```js
[ {
legs: [ {
id: '1|100067|48|81|17122017',
2017-11-13 00:38:09 +01:00
origin: {
type: 'station',
id: '8089100',
name: 'Berlin Jungfernheide (S)',
location: {
type: 'location',
2017-11-13 00:38:09 +01:00
latitude: 52.530291,
longitude: 13.299451
},
products: { /* … */ }
2017-11-13 00:38:09 +01:00
},
departure: '2017-12-17T17:05:00.000+01:00',
departurePlatform: '5',
2017-11-13 00:38:09 +01:00
destination: {
type: 'station',
id: '8089118',
name: 'Berlin Beusselstraße',
location: { /* … */ },
products: { /* … */ }
2017-11-13 00:38:09 +01:00
},
arrival: '2017-12-17T17:08:00.000+01:00',
arrivalPlatform: '1',
2017-11-13 00:38:09 +01:00
line: {
type: 'line',
id: '41172',
name: 'S 41',
public: true,
2017-11-13 00:38:09 +01:00
mode: 'train',
product: 'suburban',
class: 16,
productCode: 4
2017-11-13 00:38:09 +01:00
},
direction: 'Ringbahn ->'
}, /* … */ {
origin: {
type: 'station',
id: '730749',
name: 'Berlin Hauptbahnhof (S+U), Berlin',
location: {
type: 'location',
latitude: 52.526461,
longitude: 13.369378
},
products: { /* … */ }
},
departure: '2017-12-17T17:25:00.000+01:00',
destination: {
type: 'station',
id: '8098160',
name: 'Berlin Hbf (tief)',
location: { /* … */ },
products: { /* … */ }
},
arrival: '2017-12-17T17:33:00.000+01:00',
mode: 'walking',
public: true
2017-11-13 00:38:09 +01:00
}, {
id: '1|70906|0|81|17122017',
origin: {
type: 'station',
id: '8098160',
name: 'Berlin Hbf (tief)',
location: { /* … */ },
products: { /* … */ }
},
departure: '2017-12-17T17:37:00.000+01:00',
departurePlatform: '1',
destination: {
type: 'station',
id: '8000261',
name: 'München Hbf',
location: { /* … */ },
products: { /* … */ }
},
arrival: '2017-12-17T22:45:00.000+01:00',
arrivalPlatform: '13',
2017-11-13 00:38:09 +01:00
line: { /* … */ },
direction: 'München Hbf'
} ],
origin: {
type: 'station',
id: '8089100',
name: 'Berlin Jungfernheide (S)',
2017-12-18 12:00:06 +01:00
location: { /* … */ },
products: { /* … */ }
},
departure: '2017-12-17T17:05:00.000+01:00',
destination: {
type: 'station',
id: '8000261',
name: 'München Hbf',
location: { /* … */ },
products: { /* … */ }
},
arrival: '2017-12-17T22:45:00.000+01:00',
price: {
amount: null,
hint: 'No pricing information available.'
}
2017-11-13 00:38:09 +01:00
} ]
2017-11-11 21:06:54 +01:00
```
2016-06-22 01:39:04 +02:00
## Related
- [*Friendly Public Transport Format*](https://github.com/public-transport/friendly-public-transport-format#friendly-public-transport-format-fptf) A format for APIs, libraries and datasets containing and working with public transport data.
- [`db-hafas`](https://github.com/derhuerst/db-hafas#db-hafas) JavaScript client for the DB HAFAS API.
- [`vbb-hafas`](https://github.com/derhuerst/vbb-hafas#vbb-hafas) JavaScript client for Berlin & Brandenburg public transport HAFAS API.
- [`hafas-departures-in-direction`](https://github.com/derhuerst/hafas-departures-in-direction#hafas-departures-in-direction)  Pass in a HAFAS client, get departures in a certain direction.
- [`hafas-collect-departures-at`](https://github.com/derhuerst/hafas-collect-departures-at#hafas-collect-departures-at)  Utility to collect departures, using any HAFAS client.
- [`hafas-rest-api`](https://github.com/derhuerst/hafas-rest-api#hafas-rest-api) Expose a HAFAS client via an HTTP REST API.
- [List of european long-distance transport operators, available API endpoints, GTFS feeds and client modules.](https://github.com/public-transport/european-transport-operators)
- [Collection of european transport JavaScript modules.](https://github.com/public-transport/european-transport-modules)
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).