packages feed

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 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