mandrill 0.2.2.1 → 0.3.0.0
raw patch · 4 files changed
+22/−27 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Network.API.Mandrill: sendTextEmail :: MonadIO m => MandrillMessage -> MandrillT m (MandrillResponse [MessagesResponse])
+ Network.API.Mandrill.Types: MandrillEmail :: EmailAddress -> MandrillEmail
+ Network.API.Mandrill.Types: instance FromJSON MandrillEmail
+ Network.API.Mandrill.Types: instance Show MandrillEmail
+ Network.API.Mandrill.Types: instance ToJSON MandrillEmail
+ Network.API.Mandrill.Types: newtype MandrillEmail
- Network.API.Mandrill.Types: MandrillMessage :: MandrillHtml -> Maybe Text -> !Text -> EmailAddress -> Maybe Text -> [MandrillRecipient] -> MandrillHeaders -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Bool -> Maybe Bool -> [MandrillVars] -> [MandrillMergeVars] -> [MandrillTags] -> Maybe Text -> [Text] -> Maybe Text -> MandrillVars -> [MandrillMetadata] -> [MandrillWebContent] -> [MandrillWebContent] -> MandrillMessage
+ Network.API.Mandrill.Types: MandrillMessage :: MandrillHtml -> Maybe Text -> !Text -> MandrillEmail -> Maybe Text -> [MandrillRecipient] -> MandrillHeaders -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Bool -> Maybe Bool -> [MandrillVars] -> [MandrillMergeVars] -> [MandrillTags] -> Maybe Text -> [Text] -> Maybe Text -> MandrillVars -> [MandrillMetadata] -> [MandrillWebContent] -> [MandrillWebContent] -> MandrillMessage
- Network.API.Mandrill.Types: MandrillRecipient :: EmailAddress -> Maybe Text -> Maybe MandrillRecipientTag -> MandrillRecipient
+ Network.API.Mandrill.Types: MandrillRecipient :: MandrillEmail -> Maybe Text -> Maybe MandrillRecipientTag -> MandrillRecipient
- Network.API.Mandrill.Types: _mmsg_from_email :: MandrillMessage -> EmailAddress
+ Network.API.Mandrill.Types: _mmsg_from_email :: MandrillMessage -> MandrillEmail
- Network.API.Mandrill.Types: _mrec_email :: MandrillRecipient -> EmailAddress
+ Network.API.Mandrill.Types: _mrec_email :: MandrillRecipient -> MandrillEmail
- Network.API.Mandrill.Types: mmsg_from_email :: Lens' MandrillMessage EmailAddress
+ Network.API.Mandrill.Types: mmsg_from_email :: Lens' MandrillMessage MandrillEmail
- Network.API.Mandrill.Types: mrec_email :: Lens' MandrillRecipient EmailAddress
+ Network.API.Mandrill.Types: mrec_email :: Lens' MandrillRecipient MandrillEmail
Files
- mandrill.cabal +2/−2
- src/Network/API/Mandrill.hs +2/−1
- src/Network/API/Mandrill/Orphans.hs +0/−17
- src/Network/API/Mandrill/Types.hs +18/−7
mandrill.cabal view
@@ -1,5 +1,5 @@ name: mandrill-version: 0.2.2.1+version: 0.3.0.0 synopsis: Library for interfacing with the Mandrill JSON API description: Pure Haskell client for the Mandrill JSON API license: MIT@@ -28,7 +28,6 @@ other-modules: Network.API.Mandrill.Utils Network.API.Mandrill.HTTP- Network.API.Mandrill.Orphans -- other-extensions: build-depends: base >=4.6 && < 5@@ -51,6 +50,7 @@ src default-language: Haskell2010+ ghc-options: -funbox-strict-fields
src/Network/API/Mandrill.hs view
@@ -9,6 +9,7 @@ module Network.API.Mandrill ( module M , sendEmail+ , sendTextEmail , emptyMessage , newTextMessage , newHtmlMessage@@ -62,7 +63,7 @@ _mmsg_html = mempty , _mmsg_text = Nothing , _mmsg_subject = T.empty- , _mmsg_from_email = f+ , _mmsg_from_email = (MandrillEmail f) , _mmsg_from_name = Nothing , _mmsg_to = map newRecipient t , _mmsg_headers = JSON.Null
− src/Network/API/Mandrill/Orphans.hs
@@ -1,17 +0,0 @@--module Network.API.Mandrill.Orphans where--import Data.Aeson-import Data.Aeson.Types-import Text.Email.Validate-import qualified Data.Text.Encoding as TE---instance ToJSON EmailAddress where- toJSON = String . TE.decodeUtf8 . toByteString--instance FromJSON EmailAddress where- parseJSON (String s) = case validate (TE.encodeUtf8 s) of- Left err -> fail err- Right v -> return v- parseJSON o = typeMismatch "Expecting a String for EmailAddress." o
src/Network/API/Mandrill/Types.hs view
@@ -6,14 +6,12 @@ module Network.API.Mandrill.Types where import Network.API.Mandrill.Utils-import Network.API.Mandrill.Orphans() import Test.QuickCheck import Text.Email.Validate import Data.Char import Data.Maybe import Data.Time import Control.Applicative-import Data.Time (ParseTime) #if MIN_VERSION_time(1,5,0) import Data.Time.Format (TimeLocale, defaultTimeLocale) #else@@ -102,9 +100,22 @@ --------------------------------------------------------------------------------+newtype MandrillEmail = MandrillEmail EmailAddress deriving Show++instance ToJSON MandrillEmail where+ toJSON (MandrillEmail e) = String . TL.decodeUtf8 . toByteString $ e++instance FromJSON MandrillEmail where+ parseJSON (String s) = case validate (TL.encodeUtf8 s) of+ Left err -> fail err+ Right v -> return . MandrillEmail $ v+ parseJSON o = typeMismatch "Expecting a String for MandrillEmail." o+++-------------------------------------------------------------------------------- -- | An array of recipient information. data MandrillRecipient = MandrillRecipient {- _mrec_email :: EmailAddress+ _mrec_email :: MandrillEmail -- ^ The email address of the recipient , _mrec_name :: Maybe T.Text -- ^ The optional display name to use for the recipient@@ -117,11 +128,11 @@ deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''MandrillRecipient newRecipient :: EmailAddress -> MandrillRecipient-newRecipient email = MandrillRecipient email Nothing Nothing+newRecipient email = MandrillRecipient (MandrillEmail email) Nothing Nothing instance Arbitrary MandrillRecipient where arbitrary = pure MandrillRecipient {- _mrec_email = fromJust (emailAddress "test@example.com")+ _mrec_email = MandrillEmail $ fromJust (emailAddress "test@example.com") , _mrec_name = Nothing , _mrec_type = Nothing }@@ -218,7 +229,7 @@ -- ^ Optional full text content to be sent , _mmsg_subject :: !T.Text -- ^ The message subject- , _mmsg_from_email :: EmailAddress+ , _mmsg_from_email :: MandrillEmail -- ^ The sender email address , _mmsg_from_name :: Maybe T.Text -- ^ Optional from name to be used@@ -301,7 +312,7 @@ arbitrary = MandrillMessage <$> arbitrary <*> pure Nothing <*> pure "Test Subject"- <*> pure (fromJust $ emailAddress "sender@example.com")+ <*> pure (MandrillEmail . fromJust $ emailAddress "sender@example.com") <*> pure Nothing <*> resize 2 arbitrary <*> pure emptyObject