1c9fde6bfd
Thanks to derf for providing the train type information for Germany (https://lib.finalrewind.org/dbdb/)
205 lines
6.8 KiB
Nim
205 lines
6.8 KiB
Nim
import options
|
|
import asynchttpserver
|
|
|
|
type
|
|
NimHttpResponse* = object
|
|
code*: HttpCode
|
|
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]
|
|
|
|
Operator* = object
|
|
id*: string
|
|
name*: string
|
|
|
|
Cycle* = object
|
|
min*: Option[int]
|
|
max*: Option[int]
|
|
nr*: Option[int]
|
|
|
|
Price* = object
|
|
amount*: Option[float]
|
|
currency*: Option[string]
|
|
hint*: 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 ValueError
|
|
errorException* = object of ValueError
|
|
|
|
hafasExceptionKind* = enum
|
|
SERVER_ERROR, ACCESS_DENIED, INVALID_REQUEST, NOT_FOUND
|
|
|
|
hafasException* = ref object of ValueError
|
|
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
|
|
]
|