{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
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