validateMovement: min/max longitude/latitude config

This commit is contained in:
Jannis R 2018-12-30 13:52:34 +01:00
parent b9282435a5
commit b55c2c1579
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
2 changed files with 45 additions and 32 deletions

View file

@ -376,6 +376,8 @@ const validateDepartures = (val, deps, name = 'departures') => {
}
}
const createValidateMovement = (cfg) => {
const { maxLatitude, minLatitude, maxLongitude, minLongitude } = cfg
const validateMovement = (val, m, name = 'movement') => {
a.ok(isObj(m), name + ' must be an object')
// todo: let hafas-client add a .type field
@ -386,10 +388,18 @@ const validateMovement = (val, m, name = 'movement') => {
const lName = name + '.location'
val.location(val, m.location, lName)
a.ok(m.location.latitude <= 55, lName + '.latitude is too small')
a.ok(m.location.latitude >= 45, lName + '.latitude is too large')
a.ok(m.location.longitude >= 9, lName + '.longitude is too small')
a.ok(m.location.longitude <= 15, lName + '.longitude is too small')
if ('number' === typeof maxLatitude) {
a.ok(m.location.latitude <= maxLatitude, lName + '.latitude is too large')
}
if ('number' === typeof minLatitude) {
a.ok(m.location.latitude >= minLatitude, lName + '.latitude is too small')
}
if ('number' === typeof maxLongitude) {
a.ok(m.location.longitude <= maxLongitude, lName + '.longitude is too large')
}
if ('number' === typeof minLongitude) {
a.ok(m.location.longitude >= minLongitude, lName + '.longitude is too small')
}
a.ok(Array.isArray(m.nextStops), name + '.nextStops must be an array')
for (let i = 0; i < m.nextStops.length; i++) {
@ -411,6 +421,8 @@ const validateMovement = (val, m, name = 'movement') => {
// todo: validate polyline
}
return validateMovement
}
const validateMovements = (val, ms, name = 'movements') => {
a.ok(Array.isArray(ms), name + ' must be an array')
@ -437,6 +449,6 @@ module.exports = {
departure: createValidateDeparture,
departures: () => validateDepartures,
arrivals: () => validateArrivals,
movement: () => validateMovement,
movement: createValidateMovement,
movements: () => validateMovements
}

View file

@ -11,7 +11,7 @@ const {
line: createValidateLine,
journeyLeg: createValidateJourneyLeg,
departure: createValidateDeparture,
movement: _validateMovement
movement: createValidateMovement
} = require('./validators')
const when = createWhen('Europe/Berlin', 'de-DE')
@ -72,6 +72,7 @@ const validateDeparture = (validate, dep, name) => {
validateDirection(dep.direction, name + '.direction')
}
const _validateMovement = createValidateMovement(cfg)
const validateMovement = (validate, m, name) => {
_validateMovement(validate, m, name)
validateDirection(m.direction, name + '.direction')