{-# LANGUAGE FlexibleInstances #-}
module Conferer.FetchFromConfig.Warp
(
) where
import Conferer.Core
import Conferer.Types
import Conferer.FetchFromConfig.Basics
import Data.Maybe (catMaybes)
import Network.Wai.Handler.Warp
import Data.String (fromString)
import Data.Text (unpack)
import Data.Maybe (fromMaybe)
instance FetchFromConfig HostPreference where
fetch = fetchFromConfigWith (pure . fromString . unpack)
instance FetchFromConfig Settings where
fetch k config = do
port <- fetch (k /. "port") config
timeout <- fetch (k /. "timeout") config
host <- fetch (k /. "host") config
serverName <- fetch (k /. "serverName") config
let overriders = catMaybes [
setTimeout <$> timeout,
setHost <$> host,
setPort <$> port,
setServerName <$> serverName
]
return $ return $ foldr ($) defaultSettings overriders