1 module Rakka.Environment
13 import Control.Arrow.ArrowIO
14 import qualified Data.ByteString.Char8 as C8
17 import qualified Network.HTTP.Lucu.Config as LC
22 data Environment = Environment {
23 envLocalStateDir :: FilePath
24 , envLucuConf :: LC.Config
25 , envStorage :: Storage
29 setupEnv :: FilePath -> PortNumber -> IO Environment
30 setupEnv lsdir portNum
31 = do let lucuConf = LC.defaultConfig {
32 LC.cnfServerPort = PortNumber portNum
34 storage <- mkStorage -- FIXME
35 return $ Environment {
36 envLocalStateDir = lsdir
37 , envLucuConf = lucuConf
38 , envStorage = storage
42 getSiteName :: Environment -> IO String
44 = return "Rakka" -- FIXME
47 getSiteNameA :: ArrowIO a => Environment -> a b String
48 getSiteNameA = arrIO0 . getSiteName
51 getBaseURI :: Environment -> IO URI
53 = do let conf = envLucuConf env
54 host = C8.unpack $ LC.cnfServerHost conf
55 port = case LC.cnfServerPort conf of
56 PortNumber num -> fromIntegral num
59 = "http://" ++ host ++
62 else ':' : show port) ++ "/"
64 return $ fromJust $ parseURI defaultURI -- FIXME
67 getBaseURIA :: ArrowIO a => Environment -> a b URI
68 getBaseURIA = arrIO0 . getBaseURI