import json, asyncdispatch, options, strutils import nimhafas import ../asyncWebServer import ../utils, ../translations, ../types, ../cache_types, ../cache import ../formaters/renderJourneys proc journeysHandler* (request: Request, server: ServerRef) {.async.} = let urlParts = request.url.path.split("/") let requestParams = parseQuery(request.url.query) var headers = newHttpHeaders() var lang = "de" var cacheObj: CacheObject try: languageHandler() if not cacheExists(urlParts[1]): raise newException(notFoundException, "REQUEST_NOT_FOUND") cacheObj = getCacheObject(urlParts[1]) if requestParams.hasKey("more"): var params = cacheObj.params let mode = parseEnum[moreJourneysMode](requestParams["more"]) if mode != later: params.earlierRef = some(cacheObj.earlierRef) else: params.laterRef = some(cacheObj.laterRef) cacheObj = await updateJourneys(urlParts[1], mode, (await journeys(params))) var templateContext = renderJourneys(cacheObj) if not requestParams.hasKey("json"): await request.respTemplate(Http200, "journeys", templateContext, lang, headers) else: await request.respondJson(Http200, "success", "", templateContext) except notFoundException: if not requestParams.hasKey("json"): await request.respError(Http404, "Nichts gefunden!", "Für diese Anfrage gibts nix.") else: await request.respondJson(Http404, "error", getCurrentExceptionMsg().split("\n")[0], newJObject())