{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Concurrent
import Network.HTTP.Types.Status
import Network.Wai
import qualified Network.Wai.Middleware.Brotli as B
import Network.Wai.Handler.Warp
import Network.Wai.Application.Static
import Network.Wai.Middleware.Gzip
main :: IO ()
main = do
let settings =
B.defaultSettings
{B.brotliFilesBehavior = B.BrotliPreCompressed (B.BrotliCacheFolder "."), B.brotliMinimumSize = 5}
-- app = staticApp $ defaultFileServerSettings "."
app = \req respond -> respond $ responseStream ok200 [("Content-Type", "text/wow")] $ \send flush -> do
send "Hello"
flush
threadDelay 10000000
send "World"
runEnv 3000 (gzip def {- TODO replace gzip with zopfli -} $ B.brotli settings {- $ sdch sdchSettings -} $ app)