diff options
author | Joris | 2016-07-14 11:57:12 +0000 |
---|---|---|
committer | Joris | 2016-07-14 12:00:05 +0000 |
commit | 69e69017b75d1cdaa1fd2aef2818de5111b29735 (patch) | |
tree | 99dba8f67dc1c55b2cc22f33f81c59c7355b337b /src/Conf.hs | |
parent | 04f9a66c66ca137d9fee6ccca228c41fec960fe0 (diff) | |
download | ad-listener-69e69017b75d1cdaa1fd2aef2818de5111b29735.tar.gz ad-listener-69e69017b75d1cdaa1fd2aef2818de5111b29735.tar.bz2 ad-listener-69e69017b75d1cdaa1fd2aef2818de5111b29735.zip |
Update code and fix parsers
Diffstat (limited to 'src/Conf.hs')
-rw-r--r-- | src/Conf.hs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/Conf.hs b/src/Conf.hs new file mode 100644 index 0000000..fccf2a5 --- /dev/null +++ b/src/Conf.hs @@ -0,0 +1,32 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Conf + ( parse + , Conf(..) + ) where + +import Data.Text (Text) +import qualified Data.ConfigManager as Conf +import Data.Time.Clock (NominalDiffTime) + +import Model.URL + +data Conf = Conf + { url :: URL + , mailFrom :: Text + , mailTo :: [Text] + , properties :: [Text] + , listenInterval :: NominalDiffTime + } deriving Show + +parse :: FilePath -> IO (Either Text Conf) +parse path = + (flip fmap) (Conf.readConfig path) (\configOrError -> do + conf <- configOrError + Conf <$> + Conf.lookup "url" conf <*> + Conf.lookup "mailFrom" conf <*> + Conf.lookup "mailTo" conf <*> + Conf.lookup "properties" conf <*> + Conf.lookup "listenInterval" conf + ) |