soostone/lib/Soostone.hs

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