]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Environment.hs
I'm getting tired so I must have a rest.
[Rakka.git] / Rakka / Environment.hs
index 069f9eba3ceb34e8ea2d57c4ccf7551b3c155874..881a9e69ef40fe3f8023fb81aafc80bb90f08b2f 100644 (file)
@@ -1,16 +1,28 @@
 module Rakka.Environment
     ( Environment(..)
     , setupEnv
+
+    , getSiteName
+    , getSiteNameA
+
+    , getBaseURI
+    , getBaseURIA
     )
     where
 
+import           Control.Arrow.ArrowIO
+import qualified Data.ByteString.Char8 as C8
+import           Data.Maybe
 import           Network
 import qualified Network.HTTP.Lucu.Config as LC
+import           Network.URI
+import           Rakka.Storage
 
 
 data Environment = Environment {
       envLocalStateDir :: FilePath
     , envLucuConf      :: LC.Config
+    , envStorage       :: Storage
     }
 
 
@@ -19,7 +31,38 @@ setupEnv lsdir portNum
     = do let lucuConf = LC.defaultConfig {
                           LC.cnfServerPort = PortNumber portNum
                         }
+         storage <- mkStorage -- FIXME
          return $ Environment {
                       envLocalStateDir = lsdir
                     , envLucuConf      = lucuConf
-                    }
\ No newline at end of file
+                    , envStorage       = storage
+                    }
+
+
+getSiteName :: Environment -> IO String
+getSiteName env
+    = return "Rakka" -- FIXME
+
+
+getSiteNameA :: ArrowIO a => Environment -> a b String
+getSiteNameA = arrIO0 . getSiteName
+
+
+getBaseURI :: Environment -> IO URI
+getBaseURI env
+    = do let conf = envLucuConf env
+             host = C8.unpack $ LC.cnfServerHost conf
+             port = case LC.cnfServerPort conf of
+                      PortNumber num -> fromIntegral num
+             
+             defaultURI
+                  = "http://" ++ host ++
+                    (if port == 80
+                     then ""
+                     else ':' : show port) ++ "/"
+
+         return $ fromJust $ parseURI defaultURI -- FIXME
+
+
+getBaseURIA :: ArrowIO a => Environment -> a b URI
+getBaseURIA = arrIO0 . getBaseURI
\ No newline at end of file