{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} -- | A simple HTTP server that serves the index.html page module Ghci.Server.Http.Internal where import Control.Concurrent (forkIO) import Control.Monad (void) import Ghci.Server.Http.Stage0 (mkEmbedded) import Network.Wai (Application) import Network.Wai.Application.Static (ssIndices, ssRedirectToIndex, staticApp) import Network.Wai.Handler.Warp (run) import WaiAppStatic.Storage.Embedded import WaiAppStatic.Types (unsafeToPiece) import Ghci.Server.Config (Config, cfHTTPPort) theApp :: Application theApp = let st = $(mkSettings mkEmbedded) in staticApp $ st { ssRedirectToIndex = True, ssIndices = [unsafeToPiece "index.html"] } startConfig :: Config -> IO () startConfig cf = do let p = cfHTTPPort cf putStrLn $ "Starting HTTP server on port " ++ show p void $ forkIO $ run (cfHTTPPort cf) theApp