aboutsummaryrefslogtreecommitdiff
path: root/lib/Server.hs
diff options
context:
space:
mode:
authorstuebinm2023-05-20 00:13:35 +0200
committerstuebinm2023-05-20 00:13:47 +0200
commit965eb7097326bd28a7e5cb6c243c28e81cab4593 (patch)
treefb67d9d7655a11808758097a8e291acbff671930 /lib/Server.hs
parentbd81153b3be98e6c8d514b2bfdd731637d821414 (diff)
expose the gtfs.zip used in the API
Diffstat (limited to 'lib/Server.hs')
-rw-r--r--lib/Server.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/Server.hs b/lib/Server.hs
index 7fdfd71..d6e9955 100644
--- a/lib/Server.hs
+++ b/lib/Server.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE FlexibleContexts #-}
@@ -7,14 +8,14 @@
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE DataKinds #-}
-- Implementation of the API. This module is the main point of the program.
module Server (application) where
import Control.Concurrent.STM (TQueue, TVar, atomically,
- newTQueue, newTVar, readTQueue,
- readTVar, writeTQueue, writeTVar, newTVarIO)
+ newTQueue, newTVar, newTVarIO,
+ readTQueue, readTVar, writeTQueue,
+ writeTVar)
import Control.Monad (forever, unless, void, when)
import Control.Monad.Catch (handle)
import Control.Monad.Extra (ifM, maybeM, unlessM, whenJust,
@@ -23,8 +24,8 @@ import Control.Monad.IO.Class (MonadIO (liftIO))
import Control.Monad.Logger (LoggingT, logWarnN)
import Control.Monad.Reader (forM)
import Control.Monad.Trans (lift)
-import qualified Data.Aeson as A
import Data.Aeson ((.=))
+import qualified Data.Aeson as A
import qualified Data.ByteString.Char8 as C8
import Data.Coerce (coerce)
import Data.Functor ((<&>))
@@ -45,7 +46,9 @@ import Fmt ((+|), (|+))
import qualified Network.WebSockets as WS
import Servant (Application,
ServerError (errBody), err401,
- err404, serve, throwError, serveDirectoryFileServer)
+ err404, serve,
+ serveDirectoryFileServer,
+ throwError)
import Servant.API (NoContent (..), (:<|>) (..))
import Servant.Server (Handler, hoistServer)
import Servant.Swagger (toSwagger)
@@ -90,7 +93,7 @@ server gtfs@GTFS{..} Metrics{..} subscribers dbpool settings = handleDebugAPI
:<|> (handleStations :<|> handleTimetable :<|> handleTimetableStops :<|> handleTrip
:<|> handleRegister :<|> handleTrainPing (throwError err401) :<|> handleWS
:<|> handleSubscribe :<|> handleDebugState :<|> handleDebugTrain
- :<|> handleDebugRegister :<|> gtfsRealtimeServer gtfs dbpool)
+ :<|> handleDebugRegister :<|> pure gtfsFile :<|> gtfsRealtimeServer gtfs dbpool)
:<|> metrics
:<|> serveDirectoryFileServer (serverConfigAssets settings)
:<|> pure (unsafePerformIO (toWaiAppPlain (ControlRoom gtfs dbpool settings)))