{-# LANGUAGE DataKinds #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TypeOperators #-} module Main where import Rebase.Prelude hiding (Handler) import Servant import Network.Wai.Handler.Warp type API = HelloWorldApi type HelloWorldApi = "hello" :> Get '[ PlainText] String type HandlerS state api = ServerT api (ReaderT state (ExceptT ServantErr IO)) type HandlerG api = HandlerS Global api data Global = Global { } api :: Proxy API api = Proxy webApp :: Global -> Application webApp global = serve api $ hoistServer api (Handler . flip runReaderT global) server main :: IO () main = run 8080 $ webApp Global helloWorld :: HandlerG HelloWorldApi helloWorld = return "Hello, World!" server :: HandlerG API server = helloWorld