breve-0.0.2.0: src/Breve/Common.hs
{-# LANGUAGE MultiParamTypeClasses #-}
module Breve.Common where
import Paths_breve (getDataFileName)
import Control.Applicative
import Control.Monad.IO.Class (liftIO)
import Text.Printf (printf)
import System.Environment (lookupEnv)
import Web.Simple.Templates
import Network.Wai.Handler.Warp
data AppSettings = AppSettings { }
serverSettings :: IO (String, Settings)
serverSettings = do
port <- maybe 3000 read <$> lookupEnv "PORT"
host <- maybe "localhost" id <$> lookupEnv "HOSTNAME"
let opts = setPort port defaultSettings
url = if port == 80
then printf "http://%s/" host
else printf "http://%s:%d/" host port
return (url, opts)
newAppSettings :: IO AppSettings
newAppSettings = return AppSettings
instance HasTemplates IO AppSettings where
defaultLayout = do
main <- liftIO (getDataFileName "layouts/main.html")
Just <$> getTemplate main