28 lines
1.1 KiB
Nim
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()
|