cheogram-muc-bridge/Config.hs

45 lines
1.2 KiB
Haskell
Raw Normal View History

module Config (setup, Config(..), ConfigFile.ServerConfig(..), ConfigFile.MUC(..)) where
2021-06-24 02:00:55 +00:00
import Prelude ()
import BasicPrelude
import Data.Time.Clock.POSIX (getPOSIXTime)
2021-06-24 02:00:55 +00:00
import qualified Dhall
import qualified Network.Protocol.XMPP as XMPP
import qualified Database.SQLite.Simple as DB
2021-06-24 02:00:55 +00:00
import qualified ConfigFile
2021-06-24 02:00:55 +00:00
data Config = Config {
componentJid :: XMPP.JID,
server :: ConfigFile.ServerConfig,
2021-06-24 02:00:55 +00:00
secret :: Text,
2021-06-24 04:02:38 +00:00
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
2021-06-24 02:00:55 +00:00
}