cheogram-muc-bridge/Config.hs

45 lines
1.2 KiB
Haskell

module Config (setup, Config(..), ConfigFile.ServerConfig(..), ConfigFile.MUC(..)) where
import Prelude ()
import BasicPrelude
import Data.Time.Clock.POSIX (getPOSIXTime)
import qualified Dhall
import qualified Network.Protocol.XMPP as XMPP
import qualified Database.SQLite.Simple as DB
import qualified ConfigFile
data Config = Config {
componentJid :: XMPP.JID,
server :: ConfigFile.ServerConfig,
secret :: Text,
nick :: Text,
bridgeJid :: XMPP.JID,
db :: DB.Connection,
dbVersion :: Integer,
mucs :: [[ConfigFile.MUC]]
}
-- Not importing Util because Util imports us
s :: (IsString s) => String -> s
s = fromString
setup :: Text -> IO Config
setup expr = do
configFile <- Dhall.input Dhall.auto expr
Just bridgeJid <- return $ XMPP.parseJID $ s"bridge@" ++
XMPP.formatJID (ConfigFile.componentJid configFile) ++ s"/bridge"
db <- DB.open (textToString $ ConfigFile.db configFile)
now <- getPOSIXTime
return $ Config {
componentJid = ConfigFile.componentJid configFile,
server = ConfigFile.server configFile,
secret = ConfigFile.secret configFile,
nick = ConfigFile.nick configFile,
bridgeJid = bridgeJid,
db = db,
dbVersion = ceiling now,
mucs = ConfigFile.mucs configFile
}