import json, tables, options, asyncdispatch, strutils import ../types, ../cache_types, ../backend/hafas, ../cache proc moreJourneysEndpoint*(requestData: JsonNode): Future[JsonNode] {.async.} = var reqId = requestData{"reqId"}.getStr() var mode = later if reqId != "": if not cacheExists(reqId): raise newException(notFoundException, "REQUEST_NOT_FOUND") if requestData{"mode"}.getStr() != "": mode = parseEnum[moreJourneysMode](requestData{"mode"}.getStr()) var cacheObj = getCacheObject(reqId) var params = cacheObj.params if mode != later: params.earlierRef = some(cacheObj.earlierRef) else: params.laterRef = some(cacheObj.laterRef) let journeys = await journeys(params) cacheObj = (await updateJourneys(reqId, mode, journeys)) var response = %* { "reqId": cacheObj.reqId, "lastUpdated": cacheObj.lastUpdated, "params": cacheObj.params, "journeys": {} } for key, journey in pairs(cacheObj.journeys): response["journeys"].add(key, %* journey) delete(response["journeys"][key], "refreshToken") delete(response["journeys"][key], "cycle") for legKey, leg in pairs(journey.legs): delete(response["journeys"][key]["legs"][legKey], "cycle") delete(response["journeys"][key]["legs"][legKey], "tripId") return response else: raise newException(errorException, "MISSING_VALUES")