mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 15:19:35 +02:00
CMTA profile
This commit is contained in:
parent
313d97c1fc
commit
533f8ece3c
4 changed files with 156 additions and 0 deletions
23
p/cmta/example.js
Normal file
23
p/cmta/example.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
'use strict'
|
||||
|
||||
const createClient = require('../..')
|
||||
const cmtaProfile = require('.')
|
||||
|
||||
const client = createClient(cmtaProfile)
|
||||
|
||||
// Broadie Oaks to Domain
|
||||
client.journeys('000002370', '900000024101', {results: 1, polylines: true})
|
||||
// client.departures('000002370', {duration: 1})
|
||||
// client.locations('Westgate', {results: 2})
|
||||
// client.location('900000042101') // Spichernstr TODO
|
||||
// client.nearby(52.5137344, 13.4744798, {distance: 60}) TODO
|
||||
// client.radar(52.52411, 13.41002, 52.51942, 13.41709, {results: 10}) TODO
|
||||
|
||||
// .then(([journey]) => {
|
||||
// const leg = journey.legs[0]
|
||||
// return client.journeyLeg(leg.id, leg.line.name, {polyline: true})
|
||||
// })
|
||||
.then((data) => {
|
||||
console.log(require('util').inspect(data, {depth: null}))
|
||||
})
|
||||
.catch(console.error)
|
59
p/cmta/index.js
Normal file
59
p/cmta/index.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
'use strict'
|
||||
|
||||
const shorten = require('vbb-short-station-name')
|
||||
const {to12Digit, to9Digit} = require('vbb-translate-ids')
|
||||
const parseLineName = require('vbb-parse-line')
|
||||
const parseTicket = require('vbb-parse-ticket')
|
||||
const getStations = require('vbb-stations')
|
||||
|
||||
const _createParseLine = require('../../parse/line')
|
||||
const _parseLocation = require('../../parse/location')
|
||||
const _createParseJourney = require('../../parse/journey')
|
||||
const _createParseDeparture = require('../../parse/departure')
|
||||
const _formatStation = require('../../format/station')
|
||||
const createParseBitmask = require('../../parse/products-bitmask')
|
||||
const createFormatBitmask = require('../../format/products-bitmask')
|
||||
|
||||
const modes = require('./modes')
|
||||
|
||||
const formatBitmask = createFormatBitmask(modes)
|
||||
|
||||
const transformReqBody = (body) => {
|
||||
body.client = {type: 'WEB', id: 'CMTA', name: 'webapp', l: ''}
|
||||
body.ext = 'SBB.TZT.1'
|
||||
body.ver = '1.13'
|
||||
body.auth = {type: 'AID', aid: 'weblwemrcrlwemlcri'}
|
||||
|
||||
return body
|
||||
}
|
||||
|
||||
const defaultProducts = {
|
||||
bus: true,
|
||||
rapid: true,
|
||||
rail: true
|
||||
}
|
||||
|
||||
const formatBitmask = createFormatBitmask(modes)
|
||||
|
||||
const formatProducts = (products) => {
|
||||
products = Object.assign(Object.create(null), defaultProducts, products)
|
||||
return {
|
||||
type: 'PROD',
|
||||
mode: 'INC',
|
||||
value: formatBitmask(products) + ''
|
||||
}
|
||||
}
|
||||
|
||||
const cmtaProfile = {
|
||||
endpoint: 'https://capmetro.hafas.de/bin/mgate.exe',
|
||||
locale: 'en-US',
|
||||
timezone: 'America/Chicago',
|
||||
products: modes.allProducts,
|
||||
transformReqBody,
|
||||
formatProducts,
|
||||
parseProducts: createParseBitmask(modes.allProducts, defaultProducts),
|
||||
}
|
||||
|
||||
module.exports = cmtaProfile
|
||||
|
||||
module.exports = vbbProfile
|
56
p/cmta/modes.js
Normal file
56
p/cmta/modes.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
'use strict'
|
||||
|
||||
const m = {
|
||||
bus: {
|
||||
category: 1,
|
||||
bitmask: 32,
|
||||
name: 'Bus',
|
||||
mode: 'bus',
|
||||
short: 'B',
|
||||
product: 'bus'
|
||||
},
|
||||
rapid: {
|
||||
category: 2,
|
||||
bitmask: 4096,
|
||||
name: 'MetroRapid',
|
||||
mode: 'bus',
|
||||
short: 'R',
|
||||
product: 'rapid'
|
||||
},
|
||||
rail: {
|
||||
category: 3,
|
||||
bitmask: 8,
|
||||
name: 'MetroRail',
|
||||
mode: 'train',
|
||||
short: 'M',
|
||||
product: 'rail'
|
||||
},
|
||||
unknown: {
|
||||
category: null,
|
||||
bitmask: 0,
|
||||
name: 'unknown',
|
||||
mode: null,
|
||||
short: '?',
|
||||
product: 'unknown'
|
||||
}
|
||||
}
|
||||
|
||||
m.bitmasks = []
|
||||
m.bitmasks[8] = m.rail
|
||||
m.bitmasks[32] = m.bus
|
||||
m.bitmasks[4096] = m.rapid
|
||||
|
||||
m.categories = [
|
||||
m.bus,
|
||||
m.rapid,
|
||||
m.rail,
|
||||
m.unknown
|
||||
]
|
||||
|
||||
m.allProducts = [
|
||||
m.bus,
|
||||
m.rapid,
|
||||
m.rail
|
||||
]
|
||||
|
||||
module.exports = m
|
18
p/cmta/readme.md
Normal file
18
p/cmta/readme.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# CMTA profile for `hafas-client`
|
||||
|
||||
[*Capital Metropolitan Transportation Authority (CMTA)*](https://en.wikipedia.org/wiki/Capital_Metropolitan_Transportation_Authority) or CapMetro is a public transportation provider serving [Austin, Texas](https://en.wikipedia.org/wiki/Austin,_Texas) metropolitan area. This profile adds *CMTA*-specific customizations to `hafas-client`.
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
const createClient = require('hafas-client')
|
||||
const cmtaProfile = require('hafas-client/p/cmta')
|
||||
|
||||
// create a client with CMTA profile
|
||||
const client = createClient(cmtaProfile)
|
||||
```
|
||||
|
||||
|
||||
## Customisations
|
||||
|
||||
- parses *CMTA*-specific products (such as *MetroRapid* and *MetroRail*)
|
Loading…
Add table
Reference in a new issue