{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.String (fromString)
import System.Environment (getArgs)
import qualified Network.Wai.Handler.Warp as Warp
import qualified Network.Wai as Wai
import qualified Network.Wai.Application.Static as Static
import Data.Maybe (fromJust)
import Data.FileEmbed (embedDir)
import WaiAppStatic.Types (toPieces)
import Network.Wai.Middleware.Multilingual(rewriteByAcceptLanguage)
main :: IO ()
main = do
host:port:_ <- getArgs
Warp.runSettings (
Warp.setHost (fromString host) $
Warp.setPort (read port) $
Warp.defaultSettings
) $ (rewriteByAcceptLanguage [
([],["en","ja"])
,(["index.htm"],["en","ja"])
,(["sub","sub.htm"],["en","ja"])
]) $ staticHttpApp
staticHttpApp :: Wai.Application
staticHttpApp = Static.staticApp $ settings { Static.ssIndices = indices }
where
settings = Static.embeddedSettings $(embedDir "static") -- embed contents as ByteString
indices = fromJust $ toPieces ["index.htm"] -- default content