{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE ScopedTypeVariables #-} module Hack2.Handler.Warp ( run , runWithConfig , runWithWarpSettings , ServerConfig(..) , hackAppToWaiApp ) where import Prelude () import Air.Env hiding (def, Default) import Hack2 import Data.Default (def, Default) import qualified Network.Wai.Handler.Warp as Warp import Hack2.Interface.Wai (hackAppToWaiApp) data ServerConfig = ServerConfig { port :: Int } deriving (Show, Eq) instance Default ServerConfig where def = ServerConfig { port = 3000 } runWithWarpSettings :: Warp.Settings -> Application -> IO () runWithWarpSettings setting app = do Warp.runSettings setting (hackAppToWaiApp app) runWithConfig :: ServerConfig -> Application -> IO () runWithConfig config app = let setting = Warp.defaultSettings {Warp.settingsPort = config.port} in runWithWarpSettings setting app run :: Application -> IO () run = runWithConfig def