diff options
author | Arguggi <git@arguggi.co.uk> | 2016-07-22 12:37:31 +0200 |
---|---|---|
committer | Arguggi <git@arguggi.co.uk> | 2016-07-22 12:43:14 +0200 |
commit | c4216c15fcead60be3f49c41a1ee7a2ec94beb42 (patch) | |
tree | 904b74d2dfd7e7354040b79b987a705c174351e8 /src/Hakyll/Preview/Server.hs | |
parent | 9b8a2257189a9a5a5c9656f8de4773e8e3548501 (diff) | |
download | hakyll-c4216c15fcead60be3f49c41a1ee7a2ec94beb42.tar.gz |
Switch preview server from Snap to Warp
Diffstat (limited to 'src/Hakyll/Preview/Server.hs')
-rw-r--r-- | src/Hakyll/Preview/Server.hs | 48 |
1 files changed, 14 insertions, 34 deletions
diff --git a/src/Hakyll/Preview/Server.hs b/src/Hakyll/Preview/Server.hs index 5de3d0c..ca02e2b 100644 --- a/src/Hakyll/Preview/Server.hs +++ b/src/Hakyll/Preview/Server.hs @@ -7,48 +7,28 @@ module Hakyll.Preview.Server -------------------------------------------------------------------------------- -import Control.Monad.Trans (liftIO) -import qualified Data.ByteString.Char8 as B -import qualified Snap.Core as Snap -import qualified Snap.Http.Server as Snap -import qualified Snap.Util.FileServe as Snap - +import Data.String +import qualified Network.Wai.Handler.Warp as Warp +import qualified Network.Wai.Application.Static as Static +import qualified Network.Wai as Wai +import Network.HTTP.Types.Status (Status) -------------------------------------------------------------------------------- import Hakyll.Core.Logger (Logger) import qualified Hakyll.Core.Logger as Logger - --------------------------------------------------------------------------------- --- | Serve a given directory -static :: FilePath -- ^ Directory to serve - -> (FilePath -> IO ()) -- ^ Pre-serve hook - -> Snap.Snap () -static directory preServe = - Snap.serveDirectoryWith directoryConfig directory - where - directoryConfig :: Snap.DirectoryConfig Snap.Snap - directoryConfig = Snap.fancyDirectoryConfig - { Snap.preServeHook = liftIO . preServe - } - - --------------------------------------------------------------------------------- --- | Main method, runs a static server in the given directory staticServer :: Logger -- ^ Logger -> FilePath -- ^ Directory to serve - -> (FilePath -> IO ()) -- ^ Pre-serve hook -> String -- ^ Host to bind on -> Int -- ^ Port to listen on -> IO () -- ^ Blocks forever -staticServer logger directory preServe host port = do +staticServer logger directory host port = do Logger.header logger $ "Listening on http://" ++ host ++ ":" ++ show port - Snap.httpServe config $ static directory preServe - where - -- Snap server config - config = Snap.setBind (B.pack host) - $ Snap.setPort port - $ Snap.setAccessLog Snap.ConfigNoLog - $ Snap.setErrorLog Snap.ConfigNoLog - $ Snap.setVerbose False - $ Snap.emptyConfig + let settings = Warp.setLogger noLog + $ Warp.setHost (fromString host) + $ Warp.setPort port Warp.defaultSettings + waiApp = Static.staticApp (Static.defaultWebAppSettings directory) + Warp.runSettings settings waiApp + +noLog :: Wai.Request -> Status -> Maybe Integer -> IO () +noLog _ _ _ = return () |