git.iko.soy/typeable/mandrill
on master help sign in
Basic support for messages/send-template
commit283ce9e1fce6ec4e80b69b2039f73d457d6be59d authortheunis <unohoo0@gmail.com> dateMon 1 Jun 2015, 17:21 (11 years ago) parent5a034e4
4 files changed+54
src/Network/API/Mandrill.hs+11 src/Network/API/Mandrill/Messages.hs+19 src/Network/API/Mandrill/Messages/Types.hs+13 src/Network/API/Mandrill/Types.hs+11
src/Network/API/Mandrill.hs+11
@@ -12,6 +12,7 @@ module Network.API.Mandrill (
1212 , emptyMessage
1313 , newTextMessage
1414 , newHtmlMessage
15+ , newTemplateMessage
1516 , liftIO
1617
1718 -- * Appendix: Example Usage
@@ -106,6 +107,16 @@ newHtmlMessage :: EmailAddress
106107newHtmlMessage f t subj html = let body = mkMandrillHtml html in
107108 ((mmsg_html .~ body) . (mmsg_subject .~ subj)) $ (emptyMessage f t)
108109
110+--------------------------------------------------------------------------------
111+-- | Create a new template message (no HTML).
112+newTemplateMessage :: EmailAddress
113+ -- ^ Sender email
114+ -> [EmailAddress]
115+ -- ^ Receivers email
116+ -> T.Text
117+ -- ^ Subject
118+ -> MandrillMessage
119+newTemplateMessage f t subj = (mmsg_subject .~ subj) $ (emptyMessage f t)
109120
110121--------------------------------------------------------------------------------
111122-- | Create a new textual message. By default Mandrill doesn't require you
src/Network/API/Mandrill/Messages.hs+19
@@ -24,3 +24,22 @@ send :: MandrillKey
2424 -> Maybe Manager
2525 -> IO (MandrillResponse [MessagesResponse])
2626send k msg async ip_pool send_at = toMandrillResponse MessagesSend (MessagesSendRq k msg async ip_pool send_at)
27+
28+-- | Send a new transactional message through Mandrill using a template
29+sendTemplate :: MandrillKey
30+ -- ^ The API key
31+ -> MandrillTemplate
32+ -- ^ The template name
33+ -> [MandrillTemplateContent]
34+ -- ^ Template content for 'editable regions'
35+ -> MandrillMessage
36+ -- ^ The email message
37+ -> Maybe Bool
38+ -- ^ Enable a background sending mode that is optimized for bulk sending
39+ -> Maybe T.Text
40+ -- ^ ip_pool
41+ -> Maybe UTCTime
42+ -- ^ send_at
43+ -> Maybe Manager
44+ -> IO (MandrillResponse [MessagesResponse])
45+sendTemplate k template content msg async ip_pool send_at = toMandrillResponse MessagesSendTemplate (MessagesSendTemplateRq k template content msg async ip_pool send_at)
src/Network/API/Mandrill/Messages/Types.hs+13
@@ -27,6 +27,19 @@ data MessagesSendRq = MessagesSendRq {
2727makeLenses ''MessagesSendRq
2828deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''MessagesSendRq
2929
30+--------------------------------------------------------------------------------
31+data MessagesSendTemplateRq = MessagesSendTemplateRq {
32+ _mstrq_key :: MandrillKey
33+ , _mstrq_template_name :: T.Text
34+ , _mstrq_template_content :: [MandrillTemplateContent]
35+ , _mstrq_message :: MandrillMessage
36+ , _mstrq_async :: Maybe Bool
37+ , _mstrq_ip_pool :: Maybe T.Text
38+ , _mstrq_send_at :: Maybe UTCTime
39+ } deriving Show
40+
41+makeLenses ''MessagesSendTemplateRq
42+deriveJSON defaultOptions { fieldLabelModifier = drop 7 } ''MessagesSendTemplateRq
3043
3144--------------------------------------------------------------------------------
3245data MessagesResponse = MessagesResponse {
src/Network/API/Mandrill/Types.hs+11
@@ -330,8 +330,19 @@ instance Arbitrary MandrillMessage where
330330 <*> pure []
331331 <*> pure []
332332
333+--------------------------------------------------------------------------------
334+-- | Key value pair for replacing content in templates via 'Editable Regions'
335+data MandrillTemplateContent = MandrillTemplateContent {
336+ _mtc_name :: T.Text
337+ , _mtc_content :: T.Text
338+ } deriving Show
339+
340+makeLenses ''MandrilTemplateContent
341+deriveJSON defaultOptions { fieldLabelModifier = drop 5 } ''MandrilTemplateContent
342+
333343--------------------------------------------------------------------------------
334344type MandrillKey = T.Text
345+type MandrillTemplate = T.Text
335346
336347newtype MandrillDate = MandrillDate {
337348 fromMandrillDate :: UTCTime