/
Server.hs
27 lines (24 loc) · 948 Bytes
/
Server.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE TypeApplications #-}
module Marlowe.Run.Server where
import Cardano.Prelude hiding (Handler)
import Marlowe.Run (getVersion)
import Marlowe.Run.API (API)
import qualified Marlowe.Run.Wallet.V1.Server as Wallet
import qualified Marlowe.Run.WebSocket as WS
import Servant (Handler (Handler), Server, ServerError, hoistServer, serveDirectoryFileServer, (:<|>) ((:<|>)))
import Servant.Client (ClientEnv)
handlers :: FilePath -> ClientEnv -> Server API
handlers staticPath env =
hoistServer (Proxy @API) liftHandler
( WS.handle
:<|> (getVersion
:<|> Wallet.handlers
)
:<|> serveDirectoryFileServer staticPath
)
where
liftHandler :: ReaderT ClientEnv (ExceptT ServerError IO) a -> Handler a
liftHandler = Handler . flip runReaderT env