oeffisearch/src/types.nim
2020-06-12 14:49:54 +00:00

204 lines
6.7 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]
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
]