move trip parsing into parse/trip

This commit is contained in:
Jannis R 2020-06-11 15:33:45 +02:00
parent 7c0be5ed74
commit dce42bfa31
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
3 changed files with 27 additions and 13 deletions

View file

@ -1,7 +1,5 @@
'use strict' 'use strict'
const minBy = require('lodash/minBy')
const maxBy = require('lodash/maxBy')
const isObj = require('lodash/isObject') const isObj = require('lodash/isObject')
const sortBy = require('lodash/sortBy') const sortBy = require('lodash/sortBy')
const pRetry = require('p-retry') const pRetry = require('p-retry')
@ -378,17 +376,7 @@ const createClient = (profile, userAgent, opt = {}) => {
return profile.request({profile, opt}, userAgent, req) return profile.request({profile, opt}, userAgent, req)
.then(({common, res}) => { .then(({common, res}) => {
const ctx = {profile, opt, common, res} const ctx = {profile, opt, common, res}
return profile.parseTrip(ctx, res.journey)
const rawLeg = { // pretend the leg is contained in a journey
type: 'JNY',
dep: minBy(res.journey.stopL, 'idx'),
arr: maxBy(res.journey.stopL, 'idx'),
jny: res.journey
}
const trip = profile.parseJourneyLeg(ctx, rawLeg, res.journey.date)
trip.id = trip.tripId
delete trip.tripId
return trip
}) })
} }

View file

@ -18,6 +18,7 @@ const parseIcon = require('../parse/icon')
const parseWhen = require('../parse/when') const parseWhen = require('../parse/when')
const parseDeparture = require('../parse/departure') const parseDeparture = require('../parse/departure')
const parseArrival = require('../parse/arrival') const parseArrival = require('../parse/arrival')
const parseTrip = require('../parse/trip')
const parseJourneyLeg = require('../parse/journey-leg') const parseJourneyLeg = require('../parse/journey-leg')
const parseJourney = require('../parse/journey') const parseJourney = require('../parse/journey')
const parseLine = require('../parse/line') const parseLine = require('../parse/line')
@ -70,6 +71,7 @@ const defaultProfile = {
parseWhen, parseWhen,
parseDeparture, parseDeparture,
parseArrival, parseArrival,
parseTrip,
parseJourneyLeg, parseJourneyLeg,
parseJourney, parseJourney,
parseLine, parseLine,

24
parse/trip.js Normal file
View file

@ -0,0 +1,24 @@
'use strict'
const minBy = require('lodash/minBy')
const maxBy = require('lodash/maxBy')
const parseTrip = (ctx, t) => { // t = raw trip
const {profile} = ctx
// pretend the trip is a leg in a journey
const fakeLeg = {
type: 'JNY',
dep: minBy(t.stopL, 'idx'),
arr: maxBy(t.stopL, 'idx'),
jny: t,
}
const trip = profile.parseJourneyLeg(ctx, fakeLeg, t.date)
trip.id = trip.tripId
delete trip.tripId
return trip
}
module.exports = parseTrip