oeffisearch/src/backend/hafas/parse/journeys_response.nim

28 lines
1.1 KiB
Nim
Raw Normal View History

2020-02-07 14:09:42 +01:00
import ../types
import ./remark
import ./point
import ./operator
import ./journey
import ./line
2020-02-14 16:34:52 +01:00
import ./polyline
2020-02-07 14:09:42 +01:00
import json
import sequtils
import strutils
proc parseJourneysResponse*(data: JsonNode, isRefresh: bool = false): JourneysResponse =
2020-02-07 14:09:42 +01:00
let points = map(data["res"]["common"]["locL"].getElems(), parsePoint)
let operators = map(data["res"]["common"]["opL"].getElems(), parseOperator)
let remarks = map(data["res"]["common"]["remL"].getElems(), parseRemark)
let lines = data["res"]["common"]["prodL"]
2020-02-14 16:34:52 +01:00
let polylines = map(data["res"]["common"]["polyL"].getElems(), mkParsePolyline(points))
2020-02-07 14:09:42 +01:00
let timestamp = parseInt(data["res"]["planrtTS"].getStr())
2020-02-14 16:34:52 +01:00
let common = CommonData(points: points, operators: operators, remarks: remarks, lines: lines, polylines: polylines, timestamp: timestamp)
2020-02-07 14:09:42 +01:00
result.journeys = data["res"]["outConL"].getElems().map(mkParseJourney(common))
if not isRefresh:
2020-06-12 16:49:54 +02:00
if data["res"].hasKey("outCtxScrB"):
result.earlierRef = data["res"]["outCtxScrB"].getStr()
if data["res"].hasKey("outCtxScrF"):
result.laterRef = data["res"]["outCtxScrF"].getStr()