diff options
Diffstat (limited to '')
-rw-r--r-- | lib/API.hs | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -5,7 +5,7 @@ -- | The sole authorative definition of this server's API, given as a Servant-style -- Haskell type. All other descriptions of the API are generated from this one. -module API (API, CompleteAPI) where +module API (API, CompleteAPI, GtfsRealtimeAPI) where import Data.Map (Map) import Data.Proxy (Proxy (..)) @@ -21,6 +21,10 @@ import Servant (Application, import Servant.API (Capture, FromHttpApiData, Get, JSON, Post, QueryParam, ReqBody, type (:<|>) ((:<|>))) +import Servant.GTFS.Realtime (Proto) +import GTFS.Realtime.FeedEntity +import GTFS.Realtime.FeedMessage (FeedMessage) + -- | The server's API (as it is actually intended). type API = "stations" :> Get '[JSON] (Map StationID Station) @@ -33,6 +37,13 @@ type API = "stations" :> Get '[JSON] (Map StationID Station) :<|> "train" :> "ping" :> ReqBody '[JSON] TripPing :> Post '[JSON] () -- debug things :<|> "debug" :> "state" :> Get '[JSON] (Map Token [TripPing]) + :<|> "gtfs" :> GtfsRealtimeAPI + +-- | The API used for publishing gtfs realtime updates +type GtfsRealtimeAPI = "servicealerts" :> Get '[Proto] FeedMessage + :<|> "tripupdates" :> Get '[Proto] FeedEntity + :<|> "vehiclepositions" :> Get '[Proto] FeedEntity + -- | The server's API with an additional debug route for accessing the specification -- itself. Split from API to prevent the API documenting the format in which it is |