mandrill-0.1.1.0: src/Network/API/Mandrill/Trans.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Network.API.Mandrill.Trans where
import Control.Monad.Reader
import Control.Applicative
import Network.API.Mandrill.Types
import Network.HTTP.Client
import Network.HTTP.Client.TLS
--------------------------------------------------------------------------------
newtype MandrillT m a = MandrillT {
runMandrillT :: ReaderT (MandrillKey, Manager) m a
} deriving (MonadTrans, MonadReader (MandrillKey, Manager),
Functor, Applicative, Monad, MonadIO)
--------------------------------------------------------------------------------
type Mandrill = MandrillT IO
--------------------------------------------------------------------------------
runMandrill :: MonadIO m
=> MandrillKey
-> MandrillT m a
-> m a
runMandrill key action = do
mgr <- liftIO $ newManager tlsManagerSettings
runReaderT (runMandrillT action) (key, mgr)