| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Imm.Boot
Description
Getting started
Dynamic reconfiguration
This program is dynamically configured using the dyre library.
You may want to check out this documentation to know how to get started.
Your personal configuration is located at $XDG_CONFIG_HOME/imm/imm.hs.
ReaderT pattern
The behavior of this program can be customized through the ReaderT pattern.
- imm :: ModulesM IO -> IO ()
- data Modules httpClient databaseClient logger hooks xmlParser = Modules {
- _httpClient :: httpClient
- _databaseClient :: databaseClient
- _logger :: logger
- _hooks :: hooks
- _xmlParser :: xmlParser
- data ModulesM m
- mkModulesM :: (MonadXmlParser (ReaderT e m), MonadImm (ReaderT d m), MonadLog (ReaderT c m), MonadDatabase FeedTable (ReaderT b m), MonadHttpClient (ReaderT a m)) => a -> b -> c -> d -> e -> ModulesM m
Documentation
imm :: ModulesM IO -> IO () Source #
Main function, meant to be used in your personal configuration file.
Here is an example:
import Imm.Boot
import Imm.Database.JsonFile
import Imm.Feed
import Imm.Hooks.SendMail
import Imm.HTTP.Conduit
import Imm.Logger.Simple
import Imm.XML.Simple
main :: IO ()
main = do
logger <- defaultLogger
manager <- defaultManager
database <- defaultDatabase
imm $ mkModulesM manager database logger sendmail defaultXmlParser
sendmail :: SendMailSettings
sendmail = SendMailSettings smtpServer formatMail
formatMail :: FormatMail
formatMail = FormatMail
(\a b -> (defaultFormatFrom a b) { addressEmail = "user@host" } )
defaultFormatSubject
defaultFormatBody
(\_ _ -> [Address Nothing "user@host"])
smtpServer :: Feed -> FeedElement -> SMTPServer
smtpServer _ _ = SMTPServer
(Just $ Authentication PLAIN "user" "password")
(StartTls "smtp.host" defaultSettingsSMTPSTARTTLS)data Modules httpClient databaseClient logger hooks xmlParser Source #
Modules are independent features of the program which behavior can be controlled by the user.
Constructors
| Modules | |
Fields
| |
Instances
| (MonadThrow m, MonadDatabase FeedTable (ReaderT * b m)) => MonadDatabase FeedTable (ReaderT * (Modules a b c d e) m) Source # | |
| (MonadIO m, MonadLog (ReaderT * c m)) => MonadLog (ReaderT * (Modules a b c d e) m) Source # | |
| (MonadThrow m, MonadHttpClient (ReaderT * a m)) => MonadHttpClient (ReaderT * (Modules a b c d e) m) Source # | |
| (Monad m, MonadImm (ReaderT * d m)) => MonadImm (ReaderT * (Modules a b c d e) m) Source # | |
| (MonadThrow m, MonadXmlParser (ReaderT * e m)) => MonadXmlParser (ReaderT * (Modules a b c d e) m) Source # | |
mkModulesM :: (MonadXmlParser (ReaderT e m), MonadImm (ReaderT d m), MonadLog (ReaderT c m), MonadDatabase FeedTable (ReaderT b m), MonadHttpClient (ReaderT a m)) => a -> b -> c -> d -> e -> ModulesM m Source #
Constructor for ModulesM.