36 lines
805 B
Haskell
36 lines
805 B
Haskell
module Soostone (
|
|
app
|
|
, middleWare
|
|
, module Soostone.API
|
|
, module Soostone.Types
|
|
, module Soostone.Handlers
|
|
) where
|
|
|
|
import Soostone.API
|
|
import Soostone.Handlers
|
|
import Soostone.Types
|
|
|
|
import Control.Monad.Reader (runReaderT)
|
|
import Network.Wai ( Middleware )
|
|
import Network.Wai.Middleware.Prometheus ( def, prometheus )
|
|
import Servant
|
|
( Application, HasServer(ServerT), Handler, hoistServer, serve )
|
|
|
|
|
|
soostoneServer :: ServerT SoostoneAPI AppM
|
|
soostoneServer = API api'
|
|
where
|
|
api' = MainAPI submitKeyHandler countKeyHandler
|
|
|
|
app :: AppState -> Application
|
|
app !s = \req resp ->
|
|
serve api (hoistServer api nt soostoneServer) req resp
|
|
where
|
|
nt :: AppM a -> Handler a
|
|
nt x = flip runReaderT s $ runAppM x
|
|
|
|
|
|
middleWare :: Middleware
|
|
middleWare baseApp =
|
|
prometheus def baseApp
|