commit c5a889ce9e216de27d07e79d12500f85d6a89a8b
parent 0b3a3db4f9992966706a36ea3025b5159dd2b3ea
Author: Leah (ctucx) <leah@ctu.cx>
Date: Sat, 13 Mar 2021 20:02:18 +0100
parent 0b3a3db4f9992966706a36ea3025b5159dd2b3ea
Author: Leah (ctucx) <leah@ctu.cx>
Date: Sat, 13 Mar 2021 20:02:18 +0100
remove git-submodule nimhafas, add nimhafas as nimble dependency
21 files changed, 37 insertions(+), 217 deletions(-)
diff --git a/.gitignore b/.gitignore @@ -3,3 +3,5 @@ oeffisearch_nojs cache data .DS_Store + +oeffi+ \ No newline at end of file
diff --git a/.gitmodules b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "src/hafas"] - path = src/hafas - url = https://cgit.ctu.cx/hafas.nim
diff --git a/oeffi.nimble b/oeffi.nimble @@ -9,3 +9,4 @@ bin = @["oeffi"] # Dependencies requires "nim >= 1.0.4" +requires "https://cgit.ctu.cx/nimhafas"
diff --git a/src/cache.nim b/src/cache.nim @@ -1,5 +1,6 @@ import tables, random, os, times, json, asyncfile, asyncdispatch, parseutils -import types, cache_types +import nimhafas +import cache_types, types randomize()
diff --git a/src/cache_types.nim b/src/cache_types.nim @@ -1,5 +1,5 @@ import tables -import types +import nimhafas type moreJourneysMode* = enum
diff --git a/src/endpoints/api/journeys.nim b/src/endpoints/api/journeys.nim @@ -1,5 +1,6 @@ import json, tables, options, asyncdispatch -import ../../types, ../../hafas/hafas, ../../cache +import nimhafas +import ../../types, ../../cache when not defined(release): import hotcodereloading
diff --git a/src/endpoints/api/moreJourneys.nim b/src/endpoints/api/moreJourneys.nim @@ -1,5 +1,6 @@ import json, tables, options, asyncdispatch, strutils -import ../../types, ../../cache_types, ../../hafas/hafas, ../../cache +import nimhafas +import ../../types, ../../cache_types, ../../cache proc moreJourneysEndpoint*(requestData: JsonNode): Future[JsonNode] {.async.} = var reqId = requestData{"reqId"}.getStr()
diff --git a/src/endpoints/api/refreshJourney.nim b/src/endpoints/api/refreshJourney.nim @@ -1,5 +1,6 @@ import json, tables, options, asyncdispatch, strutils -import ../../types, ../../cache_types, ../../hafas/hafas, ../../cache +import nimhafas +import ../../types, ../../cache_types, ../../cache proc refreshJourneyEndpoint*(requestData: JsonNode): Future[JsonNode] {.async.} = let reqId = requestData{"reqId"}.getStr()
diff --git a/src/endpoints/api/suggestions.nim b/src/endpoints/api/suggestions.nim @@ -1,5 +1,5 @@ import json, options, asyncdispatch -import ../../types, ../../hafas/hafas +import nimhafas proc suggestionsEndpoint* (data: JsonNode): Future[JsonNode] {.async.} = return %* (await suggestions(data.to(SuggestionsParams)))
diff --git a/src/endpoints/journeyHandler.nim b/src/endpoints/journeyHandler.nim @@ -1,6 +1,7 @@ import json, options, strutils, tables +import nimhafas import ../asyncWebServer -import ../utils, ../translations, ../types, ../cache_types, ../cache, ../hafas/hafas +import ../utils, ../translations, ../types, ../cache_types, ../cache import ../formaters/renderJourney proc journeyHandler* (request: Request, server: ServerRef) {.async.} =
diff --git a/src/endpoints/journeysHandler.nim b/src/endpoints/journeysHandler.nim @@ -1,6 +1,7 @@ import json, asyncdispatch, options, strutils +import nimhafas import ../asyncWebServer -import ../utils, ../translations, ../types, ../cache_types, ../cache, ../hafas/hafas +import ../utils, ../translations, ../types, ../cache_types, ../cache import ../formaters/renderJourneys proc journeysHandler* (request: Request, server: ServerRef) {.async.} =
diff --git a/src/endpoints/searchHandler.nim b/src/endpoints/searchHandler.nim @@ -1,6 +1,7 @@ import json, times, options, strutils +import nimhafas import ../asyncWebServer -import ../utils, ../translations, ../types, ../cache_types, ../cache, ../hafas/hafas +import ../utils, ../translations, ../types, ../cache_types, ../cache import ../formaters/formaters, ../formaters/renderJourneys proc searchHandler* (request: Request, server: ServerRef) {.async.} =
diff --git a/src/endpoints/suggestionsHandler.nim b/src/endpoints/suggestionsHandler.nim @@ -1,6 +1,7 @@ import json, options, strutils +import nimhafas import ../asyncWebServer -import ../types, ../hafas/hafas +import ../types import ../formaters/formaters proc suggestionsHandler* (request: Request, server: ServerRef) {.async.} =
diff --git a/src/formaters/formatFullResponse.nim b/src/formaters/formatFullResponse.nim @@ -1,4 +1,6 @@ -import tables, json, ../types, ../cache_types +import tables, json +import nimhafas +import ../types, ../cache_types proc formatFullResponse* (cacheObj: CacheObject): JsonNode = var response = %* {
diff --git a/src/formaters/formaters.nim b/src/formaters/formaters.nim @@ -1,5 +1,5 @@ import options, math, times -import ../types +import nimhafas proc formatPoint* (point: Point): string {.exportc.} = if not point.location.isNone:
diff --git a/src/formaters/renderJourney.nim b/src/formaters/renderJourney.nim @@ -1,6 +1,6 @@ import json, tables, options, math -import ../types, ../cache_types -import formaters +import nimhafas +import ../types, ../cache_types, formaters template getPlannedOrPrognosedTime(obj: untyped): int64 = if not obj.prognosedTime.isNone:
diff --git a/src/formaters/renderJourneys.nim b/src/formaters/renderJourneys.nim @@ -1,6 +1,6 @@ import json, tables, options, sequtils, strutils, algorithm, math -import ../types, ../cache_types -import formaters +import nimhafas +import ../cache_types, formaters template getPlannedOrPrognosedTime(obj: untyped): int64 = if not obj.prognosedTime.isNone:
diff --git a/src/hafas b/src/hafas @@ -1 +0,0 @@ -Subproject commit e815bbfd2ef4f49c4e3a757739a60d802bcc53f5
diff --git a/src/oeffi.nim b/src/oeffi.nim @@ -13,7 +13,9 @@ import endpoints/api/journeys import endpoints/api/moreJourneys import endpoints/api/refreshJourney -import types, hafas/hafas, formaters/formaters +import nimhafas + +import types, formaters/formaters proc removePidFile() = if getEnv("PID_FILE") != "":
diff --git a/src/types.nim b/src/types.nim @@ -1,4 +1,3 @@ -import options import httpcore type @@ -7,198 +6,5 @@ type msg*: string headers*: HttpHeaders - Stop* = object - id*: string - name*: string - location*: Location - products*: Products - station*: Option[Station] - - Station* = object - id*: int - name*: string - location*: Location - products*: Products - - Location* = object - latitude*: float - longitude*: float - name*: Option[string] - address*: Option[string] - id*: Option[string] - - Product* = enum - nationalExp, national, regionalExp, regional, suburban, bus, ferry, subway, tram, taxi - - Mode* = enum - Train, Bus, Watercraft, Taxi, Walking - - Products* = object - nationalExp*: bool - national*: bool - regionalExp*: bool - regional*: bool - suburban*: bool - bus*: bool - ferry*: bool - subway*: bool - tram*: bool - taxi*: bool - - Point* = object - stop*: Option[Stop] - location*: Option[Location] - - Journey* = object - refreshToken*: string - lastUpdated*: int64 - legs*: seq[Leg] - cycle*: Option[Cycle] - price*: Option[Price] - - LegPart* = object - point*: Point - plannedTime*: int64 - prognosedTime*: Option[int64] - plannedPlatform*: Option[string] - prognosedPlatform*: Option[string] - - Leg* = object - isWalking*: bool - isTransfer*: bool - cancelled*: bool - departure*: LegPart - arrival*: LegPart - polyline*: Option[Polyline] - distance*: Option[int] # required for isWalking or isTransfer - tripId*: Option[string] # required for not isWalking and not isTranfer - line*: Option[Line] # required for not isWalking and not isTranfer - direction*: Option[string] # required for not isWalking and not isTranfer - cycle*: Option[Cycle] - stopovers*: Option[seq[Stopover]] - remarks*: Option[seq[Remark]] - - Line* = object - id*: string - name*: string - mode*: Mode - product*: Product - tripNum*: string - productName*: string - fullProductName*: string - operator*: Option[Operator] - additionalName*: Option[string] - trainType*: Option[string] - trainTypeShort*: Option[string] - - Operator* = object - id*: string - name*: string - - Cycle* = object - min*: Option[int] - max*: Option[int] - nr*: Option[int] - - Price* = object - amount*: float - currency*: Option[string] - - StopoverPart* = object - plannedTime*: Option[int64] - prognosedTime*: Option[int64] - plannedPlatform*: Option[string] - prognosedPlatform*: Option[string] - - Stopover* = object - stop*: Stop - cancelled*: bool - departure*: StopoverPart - arrival*: StopoverPart - - Remark* = object - `type`*: Option[string] - code*: Option[string] - summary*: Option[string] - text*: Option[string] - tripId*: Option[string] - - JourneysResponse* = object - earlierRef*: string - laterRef*: string - journeys*: seq[Journey] - - Accessibility* = enum - none, partial, complete - - SuggestionsParams* = object - query*: string - results*: Option[int] #default value: 10 - stations*: Option[bool] #default value: true - poi*: Option[bool] #default value: true - addresses*: Option[bool] #default value: true - - JourneysParams* = object - fromPoint*: Point - toPoint*: Point - viaPoint*: Option[Point] #default value: null support in hafas backend: ✅ - earlierRef*: Option[string] #default value: null support in hafas backend: ✅ - laterRef*: Option[string] #default value: null support in hafas backend: ✅ - results*: Option[int] #default value: 5 support in hafas backend: ✅ - stopovers*: Option[bool] #default value: false support in hafas backend: ✅ - polylines*: Option[bool] #default value: false support in hafas backend: ✅ - remarks*: Option[bool] #default value: true support in hafas backend: - bikeFriendly*: Option[bool] #default value: false support in hafas backend: - tickets*: Option[bool] #default value: false support in hafas backend: ✅ - startWithWalking*: Option[bool] #default value: true support in hafas backend: ✅ - scheduledDays*: Option[bool] - accessibility*: Option[Accessibility] #default value: none support in hafas backend: ✅ - transfers*: Option[int] #default value: -1 support in hafas backend: ✅ - transferTime*: Option[int] #default value: 00 support in hafas backend: ✅ - arrival*: Option[int64] #default value: null support in hafas backend: ✅ - departure*: Option[int64] #default value: null support in hafas backend: ✅ - products*: Option[Products] #default value: all true support in hafas backend: ✅ - - RefreshJourneyParams* = object - refreshToken*: string - stopovers*: Option[bool] #default value: false support in hafas backend: ✅ - polylines*: Option[bool] #default value: false support in hafas backend: ✅ - tickets*: Option[bool] #default value: false support in hafas backend: ✅ - - Polyline* = object - `type`*: string - features*: seq[Feature] - - Feature* = object - `type`*: string - properties*: Option[Stop] - geometry*: FeatureGeometry - - FeatureGeometry* = object - `type`*: string - coordinates*: seq[float] - - notFoundException* = object of CatchableError - errorException* = object of CatchableError - - hafasExceptionKind* = enum - SERVER_ERROR, ACCESS_DENIED, INVALID_REQUEST, NOT_FOUND - - hafasException* = ref object of CatchableError - code*: hafasExceptionKind - message*: string - statusCode*: HttpCode - -const MODES* = [ - Train, # nationalExp - Train, # national - Train, # regionalExp - Train, # regional - Train, # suburban - Bus, # bus - Watercraft, # ferry - Train, # subway - Train, # tram - Taxi, # taxi -] + errorException* = object of CatchableError+ \ No newline at end of file
diff --git a/src/utils.nim b/src/utils.nim @@ -1,5 +1,6 @@ import json, asyncdispatch, asynchttpserver, options, strutils, httpcore -import types, translations, hafas/hafas +import nimhafas +import types, translations import moustachu, moustachu_context proc getPoint* (name: string): Future[Point] {.async} =