module Network.Wai.Serve.Applications where
import Data.Maybe (fromMaybe, mapMaybe)
import Data.String (fromString)
import Data.Text (pack)
import Network.Wai (Application)
import Network.Wai.Application.Static (defaultWebAppSettings, ss404Handler,
ssAddTrailingSlash, ssIndices, ssMaxAge,
ssRedirectToIndex, staticApp)
import Network.Wai.Middleware.Vhost (redirectTo)
import WaiAppStatic.Types (MaxAge (MaxAgeSeconds), toPiece)
staticSite :: Maybe FilePath -> Application
staticSite path = staticApp
(defaultWebAppSettings . fromString $ fromMaybe "_site" path)
{ ssIndices = mapMaybe (toPiece . pack) ["index.html"]
, ssRedirectToIndex = False
, ssAddTrailingSlash = True
, ss404Handler = Just redirectHome
, ssMaxAge = MaxAgeSeconds 604801
}
redirectHome :: Application
redirectHome _ sendResponse = sendResponse $ redirectTo "/"