formatLocation: more helpful error messages

This commit is contained in:
Jannis R 2018-04-17 18:43:42 +02:00
parent 3680f1fe94
commit 8ce89f0fe6
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
2 changed files with 7 additions and 6 deletions

View file

@ -1,14 +1,15 @@
'use strict' 'use strict'
const formatLocation = (profile, l) => { const formatLocation = (profile, l, name = 'location') => {
if ('string' === typeof l) return profile.formatStation(l) if ('string' === typeof l) return profile.formatStation(l)
if ('object' === typeof l && !Array.isArray(l)) { if ('object' === typeof l && !Array.isArray(l)) {
if (l.type === 'station') return profile.formatStation(l.id) if (l.type === 'station') return profile.formatStation(l.id)
if ('string' === typeof l.id) return profile.formatPoi(l) if ('string' === typeof l.id) return profile.formatPoi(l)
if ('string' === typeof l.address) return profile.formatAddress(l) if ('string' === typeof l.address) return profile.formatAddress(l)
throw new Error('invalid location type: ' + l.type) if (!l.type) throw new Error(`missing ${name}.type`)
throw new Error(`invalid ${name}type: ${l.type}`)
} }
throw new Error('valid station, address or poi required.') throw new Error(name + ': valid station, address or poi required.')
} }
module.exports = formatLocation module.exports = formatLocation

View file

@ -57,8 +57,8 @@ const createClient = (profile, request = _request) => {
} }
const journeys = (from, to, opt = {}) => { const journeys = (from, to, opt = {}) => {
from = profile.formatLocation(profile, from) from = profile.formatLocation(profile, from, 'from')
to = profile.formatLocation(profile, to) to = profile.formatLocation(profile, to, 'to')
if (('earlierThan' in opt) && ('laterThan' in opt)) { if (('earlierThan' in opt) && ('laterThan' in opt)) {
throw new Error('opt.laterThan and opt.laterThan are mutually exclusive.') throw new Error('opt.laterThan and opt.laterThan are mutually exclusive.')
@ -94,7 +94,7 @@ const createClient = (profile, request = _request) => {
bike: false, // only bike-friendly journeys bike: false, // only bike-friendly journeys
tickets: false, // return tickets? tickets: false, // return tickets?
}, opt) }, opt)
if (opt.via) opt.via = profile.formatLocation(profile, opt.via) if (opt.via) opt.via = profile.formatLocation(profile, opt.via, 'opt.via')
opt.when = opt.when || new Date() opt.when = opt.when || new Date()
const filters = [ const filters = [