parent
82a8a97e0f
commit
04543f0146
6 changed files with 26 additions and 27 deletions
24
api-docs.js
24
api-docs.js
|
@ -1,4 +1,4 @@
|
|||
import generateApiDocs from 'hafas-rest-api/tools/generate-docs.js'
|
||||
import {generateApiDocs} from 'hafas-rest-api/tools/generate-docs.js'
|
||||
import {api} from './api.js'
|
||||
|
||||
const HEAD = `\
|
||||
|
@ -30,22 +30,22 @@ const order = [
|
|||
|
||||
const descriptions = {
|
||||
'/locations': `\
|
||||
Uses [\`hafasClient.locations()\`](https://github.com/public-transport/hafas-client/blob/5/docs/locations.md) to **find stops/stations, POIs and addresses matching \`query\`**.
|
||||
Uses [\`hafasClient.locations()\`](https://github.com/public-transport/hafas-client/blob/6/docs/locations.md) to **find stops/stations, POIs and addresses matching \`query\`**.
|
||||
`,
|
||||
'/stops/nearby': `\
|
||||
Uses [\`hafasClient.nearby()\`](https://github.com/public-transport/hafas-client/blob/5/docs/nearby.md) to **find stops/stations close to the given geolocation**.
|
||||
Uses [\`hafasClient.nearby()\`](https://github.com/public-transport/hafas-client/blob/6/docs/nearby.md) to **find stops/stations close to the given geolocation**.
|
||||
`,
|
||||
'/stops/reachable-from': `\
|
||||
Uses [\`hafasClient.reachableFrom()\`](https://github.com/public-transport/hafas-client/blob/5/docs/reachable-from.md) to **find stops/stations reachable within a certain time from an address**.
|
||||
Uses [\`hafasClient.reachableFrom()\`](https://github.com/public-transport/hafas-client/blob/6/docs/reachable-from.md) to **find stops/stations reachable within a certain time from an address**.
|
||||
`,
|
||||
'/stops/:id': `\
|
||||
Uses [\`hafasClient.stop()\`](https://github.com/public-transport/hafas-client/blob/5/docs/stop.md) to **find a stop/station by ID**.
|
||||
Uses [\`hafasClient.stop()\`](https://github.com/public-transport/hafas-client/blob/6/docs/stop.md) to **find a stop/station by ID**.
|
||||
`,
|
||||
'/stops/:id/departures': `\
|
||||
Uses [\`hafasClient.departures()\`](https://github.com/public-transport/hafas-client/blob/5/docs/departures.md) to **get departures at a stop/station**.
|
||||
Uses [\`hafasClient.departures()\`](https://github.com/public-transport/hafas-client/blob/6/docs/departures.md) to **get departures at a stop/station**.
|
||||
`,
|
||||
'/stops/:id/arrivals': `\
|
||||
Works like [\`/stops/:id/departures\`](#get-stopsiddepartures), except that it uses [\`hafasClient.arrivals()\`](https://github.com/public-transport/hafas-client/blob/5/docs/arrivals.md) to **arrivals at a stop/station**.
|
||||
Works like [\`/stops/:id/departures\`](#get-stopsiddepartures), except that it uses [\`hafasClient.arrivals()\`](https://github.com/public-transport/hafas-client/blob/6/docs/arrivals.md) to **arrivals at a stop/station**.
|
||||
`,
|
||||
'/stations': `\
|
||||
If the \`query\` parameter is used, it will use [\`db-stations-autocomplete@2\`](https://github.com/derhuerst/db-stations-autocomplete/tree/2.2.0) to autocomplete *Deutsche Bahn*-operated stops/stations. Otherwise, it will filter the stops/stations in [\`db-stations@3\`](https://github.com/derhuerst/db-stations/tree/3.0.1).
|
||||
|
@ -56,7 +56,7 @@ Instead of receiving a JSON response, you can request [newline-delimited JSON](h
|
|||
Returns a stop/station from [\`db-stations\`](https://npmjs.com/package/db-stations).
|
||||
`,
|
||||
'/journeys': `\
|
||||
Uses [\`hafasClient.journeys()\`](https://github.com/public-transport/hafas-client/blob/5/docs/journeys.md) to **find journeys from A (\`from\`) to B (\`to\`)**.
|
||||
Uses [\`hafasClient.journeys()\`](https://github.com/public-transport/hafas-client/blob/6/docs/journeys.md) to **find journeys from A (\`from\`) to B (\`to\`)**.
|
||||
|
||||
\`from\` (A), \`to\` (B), and the optional \`via\` must each have one of these formats:
|
||||
|
||||
|
@ -68,20 +68,20 @@ Uses [\`hafasClient.journeys()\`](https://github.com/public-transport/hafas-clie
|
|||
|
||||
Given a response, you can also fetch more journeys matching the same criteria. Instead of \`from*\`, \`to*\` & \`departure\`/\`arrival\`, pass \`earlierRef\` from the first response as \`earlierThan\` to get journeys "before", or \`laterRef\` as \`laterThan\` to get journeys "after".
|
||||
|
||||
Check the [\`hafasClient.journeys()\` docs](https://github.com/public-transport/hafas-client/blob/5/docs/journeys.md) for more details.
|
||||
Check the [\`hafasClient.journeys()\` docs](https://github.com/public-transport/hafas-client/blob/6/docs/journeys.md) for more details.
|
||||
`,
|
||||
'/journeys/:ref': `\
|
||||
Uses [\`hafasClient.refreshJourney()\`](https://github.com/public-transport/hafas-client/blob/5/docs/refresh-journey.md) to **"refresh" a journey, using its \`refreshToken\`**.
|
||||
Uses [\`hafasClient.refreshJourney()\`](https://github.com/public-transport/hafas-client/blob/6/docs/refresh-journey.md) to **"refresh" a journey, using its \`refreshToken\`**.
|
||||
|
||||
The journey will be the same (equal \`from\`, \`to\`, \`via\`, date/time & vehicles used), but you can get up-to-date realtime data, like delays & cancellations.
|
||||
`,
|
||||
'/trips/:id': `\
|
||||
Uses [\`hafasClient.trip()\`](https://github.com/public-transport/hafas-client/blob/5/docs/trip.md) to **fetch a trip by ID**.
|
||||
Uses [\`hafasClient.trip()\`](https://github.com/public-transport/hafas-client/blob/6/docs/trip.md) to **fetch a trip by ID**.
|
||||
|
||||
A trip is a specific vehicle, stopping at a series of stops at specific points in time. Departures, arrivals & journey legs reference trips by their ID.
|
||||
`,
|
||||
'/radar': `\
|
||||
Uses [\`hafasClient.radar()\`](https://github.com/public-transport/hafas-client/blob/5/docs/radar.md) to **find all vehicles currently in an area**, as well as their movements.
|
||||
Uses [\`hafasClient.radar()\`](https://github.com/public-transport/hafas-client/blob/6/docs/radar.md) to **find all vehicles currently in an area**, as well as their movements.
|
||||
`,
|
||||
}
|
||||
|
||||
|
|
12
api.js
12
api.js
|
@ -5,12 +5,12 @@ const require = createRequire(import.meta.url)
|
|||
|
||||
import {dirname, join as pathJoin} from 'node:path'
|
||||
import {fileURLToPath} from 'node:url'
|
||||
import createHafas from 'db-hafas'
|
||||
import createApi from 'hafas-rest-api'
|
||||
import {createDbHafas as createHafas} from 'db-hafas'
|
||||
import {createHafasRestApi} from 'hafas-rest-api'
|
||||
import createHealthCheck from 'hafas-client-health-check'
|
||||
import Redis from 'ioredis'
|
||||
import withCache from 'cached-hafas-client'
|
||||
import redisStore from 'cached-hafas-client/stores/redis.js'
|
||||
import {createCachedHafasClient} from 'cached-hafas-client'
|
||||
import {createRedisStore} from 'cached-hafas-client/stores/redis.js'
|
||||
import serveStatic from 'serve-static'
|
||||
import {parseBoolean} from 'hafas-rest-api/lib/parse.js'
|
||||
import {loyaltyCardParser} from './lib/loyalty-cards.js'
|
||||
|
@ -29,7 +29,7 @@ let healthCheck = createHealthCheck(hafas, berlinHbf)
|
|||
|
||||
if (process.env.REDIS_URL) {
|
||||
const redis = new Redis(process.env.REDIS_URL || null)
|
||||
hafas = withCache(hafas, redisStore(redis), {
|
||||
hafas = createCachedHafasClient(hafas, createRedisStore(redis), {
|
||||
cachePeriods: {
|
||||
locations: 6 * 60 * 60 * 1000, // 6h
|
||||
},
|
||||
|
@ -87,7 +87,7 @@ const config = {
|
|||
modifyRoutes,
|
||||
}
|
||||
|
||||
const api = createApi(hafas, config, (api) => {
|
||||
const api = await createHafasRestApi(hafas, config, (api) => {
|
||||
api.use('/', serveStatic(docsRoot, {
|
||||
extensions: ['html', 'htm'],
|
||||
}))
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
[![API status](https://badgen.net/uptime-robot/status/m784879516-8a977fa91b975fc3884a9857)](https://stats.uptimerobot.com/57wNLs39M/784879516)
|
||||
|
||||
Because it wraps [an API](https://github.com/public-transport/hafas-client/blob/master/readme.md#background) of [Deutsche Bahn](https://de.wikipedia.org/wiki/Deutsche_Bahn), it **includes most of the long-distance and regional traffic, as well as some international trains and local buses**. Essentially, it returns whatever data the [*DB Navigator* app](https://www.bahn.de/p/view/service/mobile/db-navigator.shtml) shows, **including realtime delays and disruptions**.
|
||||
Because it wraps [an API](https://github.com/public-transport/hafas-client/blob/6/readme.md#background) of [Deutsche Bahn](https://de.wikipedia.org/wiki/Deutsche_Bahn), it **includes most of the long-distance and regional traffic, as well as some international trains and local buses**. Essentially, it returns whatever data the [*DB Navigator* app](https://www.bahn.de/p/view/service/mobile/db-navigator.shtml) shows, **including realtime delays and disruptions**.
|
||||
|
||||
- [Getting Started](getting-started.md)
|
||||
- [API documentation](api.md)
|
||||
|
@ -14,7 +14,7 @@ Because it wraps [an API](https://github.com/public-transport/hafas-client/blob/
|
|||
|
||||
### Realtime Data
|
||||
|
||||
This API returns realtime data whenever its upstream, the [API for DB's mobile app](https://github.com/public-transport/hafas-client/blob/33d7d30acf235c54887c6459a15fe581982c6a19/p/db/readme.md), provides it.
|
||||
This API returns realtime data whenever its upstream, the [API for DB's mobile app](https://github.com/public-transport/hafas-client/blob/6/p/db/readme.md), provides it.
|
||||
|
||||
### No API Key
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import _loyaltyCards from 'hafas-client/p/db/loyalty-cards.js'
|
||||
const {data: cards} = _loyaltyCards
|
||||
import {data as cards} from 'hafas-client/p/db/loyalty-cards.js'
|
||||
|
||||
const typesByName = new Map([
|
||||
// https://github.com/public-transport/hafas-client/blob/68ecd7c5e976dd2f51c5c64a81600e7e181a8996/p/db/loyalty-cards.js#L6-L11
|
||||
|
|
|
@ -23,14 +23,14 @@
|
|||
"node": ">=18"
|
||||
},
|
||||
"dependencies": {
|
||||
"cached-hafas-client": "^4.0.4",
|
||||
"cached-hafas-client": "^5.0.1",
|
||||
"cli-native": "^1.0.0",
|
||||
"db-hafas": "^5.0.2",
|
||||
"db-hafas": "^6.0.0",
|
||||
"db-stations": "^3.0.0",
|
||||
"db-stations-autocomplete": "^2.2.0",
|
||||
"etag": "^1.8.1",
|
||||
"hafas-client-health-check": "^2.1.1",
|
||||
"hafas-rest-api": "^3.8.0",
|
||||
"hafas-rest-api": "^5.1.0",
|
||||
"ioredis": "^5.0.6",
|
||||
"serve-buffer": "^2.0.0",
|
||||
"serve-static": "^1.14.1"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import createApi from 'hafas-rest-api'
|
||||
import {createHafasRestApi} from 'hafas-rest-api'
|
||||
import getPort from 'get-port'
|
||||
import {createServer} from 'node:http'
|
||||
import {promisify} from 'node:util'
|
||||
|
@ -21,7 +21,7 @@ const createTestApi = async (mocks, cfg) => {
|
|||
...cfg,
|
||||
}
|
||||
|
||||
const api = createApi(mockedHafas, cfg, () => {})
|
||||
const api = await createHafasRestApi(mockedHafas, cfg, () => {})
|
||||
const server = createServer(api)
|
||||
|
||||
const port = await getPort()
|
||||
|
|
Loading…
Reference in a new issue