oeffisearch/src/backend/hafas/parse/journeys_response.nim
2020-06-12 14:49:54 +00:00

28 lines
1.1 KiB
Nim

import ../types
import ./remark
import ./point
import ./operator
import ./journey
import ./line
import ./polyline
import json
import sequtils
import strutils
proc parseJourneysResponse*(data: JsonNode, isRefresh: bool = false): JourneysResponse =
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"]
let polylines = map(data["res"]["common"]["polyL"].getElems(), mkParsePolyline(points))
let timestamp = parseInt(data["res"]["planrtTS"].getStr())
let common = CommonData(points: points, operators: operators, remarks: remarks, lines: lines, polylines: polylines, timestamp: timestamp)
result.journeys = data["res"]["outConL"].getElems().map(mkParseJourney(common))
if not isRefresh:
if data["res"].hasKey("outCtxScrB"):
result.earlierRef = data["res"]["outCtxScrB"].getStr()
if data["res"].hasKey("outCtxScrF"):
result.laterRef = data["res"]["outCtxScrF"].getStr()