git.iko.soy/typeable/mandrill
on master help sign in
12 files changed+42−18
since splitsnapshots
unifiedsplit
.gitignore+1 README.md+16 mandrill-nightly.yml+3−2 mandrill.cabal+3−3 src/Network/API/Mandrill.hs+7−6 src/Network/API/Mandrill/Inbound.hs+1−1 src/Network/API/Mandrill/Messages/Types.hs+1−1 src/Network/API/Mandrill/Senders.hs+1−1 src/Network/API/Mandrill/Types.hs+6−1 src/Network/API/Mandrill/Users/Types.hs+1−1 src/Network/API/Mandrill/Webhooks.hs+1−1 stack.yaml+1−1
.gitignore+1
@@ -3,3 +3,4 @@ dist
33cabal.sandbox.config
44shell.nix
55.stack-work
6+tags
README.md+16
@@ -8,6 +8,22 @@ the [Mandrill](http://mandrillapp.com) transactional email service.
88
99# Changelog
1010
11+## Version 0.5.3.5
12+
13+* Replaced dependency on lens with microlens (Courtesy of @tom-bop)
14+
15+## Version 0.5.3.3
16+
17+* Relaxed upper bound on Aeson (see: fpco/stackage/issues/3337)
18+
19+## Version 0.5.3.2
20+
21+* Relaxed upper bound on Aeson (see: fpco/stackage/issues/2449)
22+
23+## Version 0.5.3.1
24+
25+* Relaxed upper bound on Aeson (see: fpco/stackage/issues/2177 )
26+
1127## Version 0.5.3.0
1228
1329* Added support for webhooks (thanks to @mwotton).
mandrill-nightly.yml+3−2
@@ -4,6 +4,7 @@ flags:
44packages:
55- '.'
66extra-deps:
7− - aeson-1.0.0.0
7+ - aeson-1.3.0.0
8+ - text-1.2.3.0
89 - semigroups-0.18.2
9−resolver: lts-6.9
10+resolver: lts-9.1
mandrill.cabal+3−3
@@ -1,5 +1,5 @@
11name: mandrill
2−version: 0.5.3.0
2+version: 0.5.3.5
33synopsis: Library for interfacing with the Mandrill JSON API
44description: Pure Haskell client for the Mandrill JSON API
55license: MIT
@@ -41,8 +41,8 @@ library
4141 , http-types >= 0.8.0
4242 , http-client >= 0.3.0
4343 , http-client-tls >= 0.2.0.0
44− , aeson >= 0.7.0.3 && < 1.1.0.0
45− , lens >= 4.0
44+ , aeson >= 0.7.0.3 && < 1.5.0.0
45+ , microlens-th >= 0.4.0.0
4646 , blaze-html >= 0.5.0.0
4747 , QuickCheck >= 2.6 && < 3.0
4848 , mtl < 3.0
src/Network/API/Mandrill.hs+7−6
@@ -20,7 +20,6 @@ module Network.API.Mandrill (
2020 -- $exampleusage
2121 ) where
2222
23−import Control.Lens
2423import Control.Monad.Reader
2524import qualified Data.Aeson as JSON
2625import qualified Data.HashMap.Strict as H
@@ -107,7 +106,7 @@ newHtmlMessage :: EmailAddress
107106 -- ^ The HTML body
108107 -> MandrillMessage
109108newHtmlMessage f t subj html = let body = mkMandrillHtml html in
110− ((mmsg_html .~ body) . (mmsg_subject .~ subj)) $ (emptyMessage f t)
109+ (emptyMessage f t) { _mmsg_html = body, _mmsg_subject = subj }
111110
112111--------------------------------------------------------------------------------
113112-- | Create a new template message (no HTML).
@@ -118,7 +117,7 @@ newTemplateMessage :: EmailAddress
118117 -> T.Text
119118 -- ^ Subject
120119 -> MandrillMessage
121−newTemplateMessage f t subj = (mmsg_subject .~ subj) $ (emptyMessage f t)
120+newTemplateMessage f t subj = (emptyMessage f t) { _mmsg_subject = subj }
122121
123122--------------------------------------------------------------------------------
124123-- | Create a new textual message. By default Mandrill doesn't require you
@@ -134,9 +133,11 @@ newTextMessage :: EmailAddress
134133 -- ^ The body, as normal text.
135134 -> MandrillMessage
136135newTextMessage f t subj txt = let body = unsafeMkMandrillHtml txt in
137− ((mmsg_html .~ body) .
138− (mmsg_text .~ Just txt) .
139− (mmsg_subject .~ subj)) (emptyMessage f t)
136+ (emptyMessage f t) {
137+ _mmsg_html = body
138+ , _mmsg_text = Just txt
139+ , _mmsg_subject = subj
140+ }
140141
141142
142143--------------------------------------------------------------------------------
src/Network/API/Mandrill/Inbound.hs+1−1
@@ -1,11 +1,11 @@
11{-# LANGUAGE TemplateHaskell #-}
22module Network.API.Mandrill.Inbound where
3−import Control.Lens
43import Data.Aeson (FromJSON, ToJSON, parseJSON,
54 toJSON)
65import Data.Aeson.TH (defaultOptions, deriveJSON)
76import Data.Aeson.Types (fieldLabelModifier)
87import Data.Text (Text)
8+import Lens.Micro.TH (makeLenses)
99import Network.API.Mandrill.HTTP (toMandrillResponse)
1010import Network.API.Mandrill.Settings
1111import Network.API.Mandrill.Types
src/Network/API/Mandrill/Messages/Types.hs+1−1
@@ -5,12 +5,12 @@ module Network.API.Mandrill.Messages.Types where
55import Data.Char
66import Data.Time
77import qualified Data.Text as T
8−import Control.Lens
98import Control.Monad
109import Data.Monoid
1110import Data.Aeson
1211import Data.Aeson.Types
1312import Data.Aeson.TH
13+import Lens.Micro.TH (makeLenses)
1414
1515import Network.API.Mandrill.Types
1616
src/Network/API/Mandrill/Senders.hs+1−1
@@ -1,12 +1,12 @@
11{-# LANGUAGE TemplateHaskell #-}
22module Network.API.Mandrill.Senders where
3−import Control.Lens
43import Data.Aeson (FromJSON, ToJSON, parseJSON,
54 toJSON)
65import Data.Aeson.TH (defaultOptions, deriveJSON)
76import Data.Aeson.Types (Value (..), fieldLabelModifier)
87import Data.Text (Text)
98import Data.Text.Encoding (decodeUtf8, encodeUtf8)
9+import Lens.Micro.TH (makeLenses)
1010import Network.API.Mandrill.HTTP (toMandrillResponse)
1111import Network.API.Mandrill.Settings
1212import Network.API.Mandrill.Types
src/Network/API/Mandrill/Types.hs+6−1
@@ -13,6 +13,7 @@ import Control.Monad (mzero)
1313import Data.Char
1414import Data.Maybe
1515import Data.Time
16+import Lens.Micro.TH (makeLenses)
1617import Network.API.Mandrill.Utils
1718import Test.QuickCheck
1819import Text.Email.Validate
@@ -21,7 +22,6 @@ import Data.Time.Format (TimeLocale, defaultTimeLocale)
2122#else
2223import System.Locale (TimeLocale, defaultTimeLocale)
2324#endif
24−import Control.Lens
2525import Data.Aeson
2626import Data.Aeson.TH
2727import Data.Aeson.Types
@@ -158,6 +158,11 @@ unsafeMkMandrillHtml = MandrillHtml . Blaze.preEscapedToHtml
158158mkMandrillHtml :: Blaze.Html -> MandrillHtml
159159mkMandrillHtml = MandrillHtml
160160
161+#if MIN_VERSION_base(4,11,0)
162+instance Semigroup MandrillHtml where
163+ MandrillHtml m1 <> MandrillHtml m2 = MandrillHtml (m1 <> m2)
164+#endif
165+
161166instance Monoid MandrillHtml where
162167 mempty = MandrillHtml mempty
163168 mappend (MandrillHtml m1) (MandrillHtml m2) = MandrillHtml (m1 <> m2)
src/Network/API/Mandrill/Users/Types.hs+1−1
@@ -5,12 +5,12 @@ module Network.API.Mandrill.Users.Types where
55import Data.Char
66import Data.Time
77import qualified Data.Text as T
8−import Control.Lens
98import Control.Monad
109import Data.Monoid
1110import Data.Aeson
1211import Data.Aeson.Types
1312import Data.Aeson.TH
13+import Lens.Micro.TH (makeLenses)
1414
1515import Network.API.Mandrill.Types
1616
src/Network/API/Mandrill/Webhooks.hs+1−1
@@ -2,7 +2,6 @@
22{-# LANGUAGE TemplateHaskell #-}
33module Network.API.Mandrill.Webhooks where
44import Control.Applicative (pure)
5−import Control.Lens
65import Control.Monad (mzero)
76import Data.Aeson (FromJSON, ToJSON, parseJSON,
87 toJSON)
@@ -12,6 +11,7 @@ import Data.Aeson.Types (fieldLabelModifier)
1211import Data.Set (Set)
1312import Data.Text (Text)
1413import qualified Data.Text as T
14+import Lens.Micro.TH (makeLenses)
1515import Network.API.Mandrill.HTTP (toMandrillResponse)
1616import Network.API.Mandrill.Settings
1717import Network.API.Mandrill.Types
stack.yaml+1−1
@@ -2,4 +2,4 @@ flags: {}
22packages:
33- '.'
44extra-deps: []
5−resolver: lts-5.2
5+resolver: lts-11.13