module Web.Respond.Run where
import Network.Wai
import Control.Monad.IO.Class (MonadIO)
import Web.Respond.Monad
import Web.Respond.DefaultHandlers
import Web.Respond.DefaultServer
import qualified Network.Wai.Handler.Warp as Warp
import System.Log.FastLogger (LoggerSet)
respondApp :: MonadIO m => FailureHandlers
-> (forall a. m a -> IO a)
-> RespondT m ResponseReceived
-> Application
respondApp handlers lifter api req res = lifter (runRespondT api handlers req res)
respondAppDefault :: MonadIO m => (forall a. m a -> IO a) -> RespondT m ResponseReceived -> Application
respondAppDefault = respondApp defaultHandlers
serveRespond :: MonadIO m => Warp.Port -> LoggerSet -> FailureHandlers -> (forall a. m a -> IO a) -> RespondT m ResponseReceived -> IO ()
serveRespond port loggerSet handlers lifter api = runWaiApp port loggerSet (respondApp handlers lifter api)
serveRespondDefault :: MonadIO m => Warp.Port -> LoggerSet -> (forall a. m a -> IO a) -> RespondT m ResponseReceived -> IO ()
serveRespondDefault port loggerSet lifter api = runWaiApp port loggerSet (respondAppDefault lifter api)
type RespondM a = RespondT IO a
simpleRespondApp :: FailureHandlers -> RespondM ResponseReceived -> Application
simpleRespondApp handlers = respondApp handlers id
simpleRespondAppDefault :: RespondM ResponseReceived -> Application
simpleRespondAppDefault = respondAppDefault id
serveSimpleRespond :: Warp.Port -> LoggerSet -> FailureHandlers -> RespondM ResponseReceived -> IO ()
serveSimpleRespond port loggerSet handlers = serveRespond port loggerSet handlers id
serveSimpleRespondDefault :: Warp.Port -> LoggerSet -> RespondM ResponseReceived -> IO ()
serveSimpleRespondDefault port loggerSet = serveRespondDefault port loggerSet id