module Network.API.Mandrill.Messages where

import qualified Data.Text                           as T
import           Data.Time
import           Network.API.Mandrill.HTTP
import           Network.API.Mandrill.Messages.Types
import           Network.API.Mandrill.Settings
import           Network.API.Mandrill.Types
import           Network.HTTP.Client

--------------------------------------------------------------------------------
-- | Send a new transactional message through Mandrill
send :: MandrillKey
     -- ^ The API key
     -> MandrillMessage
     -- ^ The email message
     -> Maybe Bool
     -- ^ Enable a background sending mode that is optimized for bulk sending
     -> Maybe T.Text
     -- ^ ip_pool
     -> Maybe UTCTime
     -- ^ send_at
     -> Maybe Manager
     -> IO (MandrillResponse [MessagesResponse])
send :: MandrillKey
-> MandrillMessage
-> Maybe Bool
-> Maybe MandrillKey
-> Maybe UTCTime
-> Maybe Manager
-> IO (MandrillResponse [MessagesResponse])
send MandrillKey
k MandrillMessage
msg Maybe Bool
async Maybe MandrillKey
ip_pool Maybe UTCTime
send_at = MandrillCalls
-> MessagesSendRq
-> Maybe Manager
-> IO (MandrillResponse [MessagesResponse])
forall ep a rq.
(MandrillEndpoint ep, FromJSON a, ToJSON rq) =>
ep -> rq -> Maybe Manager -> IO (MandrillResponse a)
toMandrillResponse MandrillCalls
MessagesSend (MandrillKey
-> MandrillMessage
-> Maybe Bool
-> Maybe MandrillKey
-> Maybe UTCTime
-> MessagesSendRq
MessagesSendRq MandrillKey
k MandrillMessage
msg Maybe Bool
async Maybe MandrillKey
ip_pool Maybe UTCTime
send_at)

-- | Send a new transactional message through Mandrill using a template
sendTemplate :: MandrillKey
             -- ^ The API key
             -> MandrillTemplate
             -- ^ The template name
             -> [MandrillTemplateContent]
             -- ^ Template content for 'editable regions'
             -> MandrillMessage
             -- ^ The email message
             -> Maybe Bool
             -- ^ Enable a background sending mode that is optimized for bulk sending
             -> Maybe T.Text
             -- ^ ip_pool
             -> Maybe UTCTime
             -- ^ send_at
             -> Maybe Manager
             -> IO (MandrillResponse [MessagesResponse])
sendTemplate :: MandrillKey
-> MandrillKey
-> [MandrillTemplateContent]
-> MandrillMessage
-> Maybe Bool
-> Maybe MandrillKey
-> Maybe UTCTime
-> Maybe Manager
-> IO (MandrillResponse [MessagesResponse])
sendTemplate MandrillKey
k MandrillKey
template [MandrillTemplateContent]
content MandrillMessage
msg Maybe Bool
async Maybe MandrillKey
ip_pool Maybe UTCTime
send_at = MandrillCalls
-> MessagesSendTemplateRq
-> Maybe Manager
-> IO (MandrillResponse [MessagesResponse])
forall ep a rq.
(MandrillEndpoint ep, FromJSON a, ToJSON rq) =>
ep -> rq -> Maybe Manager -> IO (MandrillResponse a)
toMandrillResponse MandrillCalls
MessagesSendTemplate (MandrillKey
-> MandrillKey
-> [MandrillTemplateContent]
-> MandrillMessage
-> Maybe Bool
-> Maybe MandrillKey
-> Maybe UTCTime
-> MessagesSendTemplateRq
MessagesSendTemplateRq MandrillKey
k MandrillKey
template [MandrillTemplateContent]
content MandrillMessage
msg Maybe Bool
async Maybe MandrillKey
ip_pool Maybe UTCTime
send_at)