packages feed

mandrill 0.5.2.1 → 0.5.2.2

raw patch · 7 files changed

+72/−4 lines, 7 filesdep ~QuickCheckPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependency ranges changed: QuickCheck

API changes (from Hackage documentation)

+ Network.API.Mandrill.Senders: VerifyDomainResponse :: Text -> Text -> MandrillEmail -> VerifyDomainResponse
+ Network.API.Mandrill.Senders: VerifyDomainRq :: MandrillKey -> Text -> Text -> VerifyDomainRq
+ Network.API.Mandrill.Senders: [_vdres_domain] :: VerifyDomainResponse -> Text
+ Network.API.Mandrill.Senders: [_vdres_email] :: VerifyDomainResponse -> MandrillEmail
+ Network.API.Mandrill.Senders: [_vdres_status] :: VerifyDomainResponse -> Text
+ Network.API.Mandrill.Senders: [_vdrq_domain] :: VerifyDomainRq -> Text
+ Network.API.Mandrill.Senders: [_vdrq_key] :: VerifyDomainRq -> MandrillKey
+ Network.API.Mandrill.Senders: [_vdrq_mailbox] :: VerifyDomainRq -> Text
+ Network.API.Mandrill.Senders: data VerifyDomainResponse
+ Network.API.Mandrill.Senders: data VerifyDomainRq
+ Network.API.Mandrill.Senders: instance Data.Aeson.Types.Class.FromJSON Network.API.Mandrill.Senders.VerifyDomainResponse
+ Network.API.Mandrill.Senders: instance Data.Aeson.Types.Class.FromJSON Network.API.Mandrill.Senders.VerifyDomainRq
+ Network.API.Mandrill.Senders: instance Data.Aeson.Types.Class.ToJSON Network.API.Mandrill.Senders.VerifyDomainResponse
+ Network.API.Mandrill.Senders: instance Data.Aeson.Types.Class.ToJSON Network.API.Mandrill.Senders.VerifyDomainRq
+ Network.API.Mandrill.Senders: instance GHC.Show.Show Network.API.Mandrill.Senders.VerifyDomainResponse
+ Network.API.Mandrill.Senders: instance GHC.Show.Show Network.API.Mandrill.Senders.VerifyDomainRq
+ Network.API.Mandrill.Senders: vdres_domain :: Lens' VerifyDomainResponse Text
+ Network.API.Mandrill.Senders: vdres_email :: Lens' VerifyDomainResponse MandrillEmail
+ Network.API.Mandrill.Senders: vdres_status :: Lens' VerifyDomainResponse Text
+ Network.API.Mandrill.Senders: vdrq_domain :: Lens' VerifyDomainRq Text
+ Network.API.Mandrill.Senders: vdrq_key :: Lens' VerifyDomainRq MandrillKey
+ Network.API.Mandrill.Senders: vdrq_mailbox :: Lens' VerifyDomainRq Text
+ Network.API.Mandrill.Senders: verifyDomain :: MandrillKey -> EmailAddress -> Maybe Manager -> IO (MandrillResponse VerifyDomainResponse)
+ Network.API.Mandrill.Settings: VerifyDomain :: MandrillCalls

Files

mandrill.cabal view
@@ -1,5 +1,5 @@ name:                mandrill-version:             0.5.2.1+version:             0.5.2.2 synopsis:            Library for interfacing with the Mandrill JSON API description:         Pure Haskell client for the Mandrill JSON API license:             MIT@@ -26,6 +26,7 @@     Network.API.Mandrill.Messages     Network.API.Mandrill.Messages.Types     Network.API.Mandrill.Inbound+    Network.API.Mandrill.Senders   other-modules:     Network.API.Mandrill.Utils     Network.API.Mandrill.HTTP@@ -42,7 +43,7 @@     , aeson >= 0.7.0.3 && < 0.12.0.0     , lens >= 4.0     , blaze-html >= 0.5.0.0-    , QuickCheck >= 2.6 && < 2.9+    , QuickCheck >= 2.6 && < 3.0     , mtl < 3.0     , time     , email-validate >= 1.0.0
+ src/Network/API/Mandrill/Senders.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE TemplateHaskell #-}+module Network.API.Mandrill.Senders where+import           Control.Lens+import           Data.Aeson                    (FromJSON, ToJSON, parseJSON,+                                                toJSON)+import           Data.Aeson.TH                 (defaultOptions, deriveJSON)+import           Data.Aeson.Types              (Value (..), fieldLabelModifier)+import           Data.Text                     (Text)+import           Data.Text.Encoding            (decodeUtf8, encodeUtf8)+import           Network.API.Mandrill.HTTP     (toMandrillResponse)+import           Network.API.Mandrill.Settings+import           Network.API.Mandrill.Types+import           Network.HTTP.Client           (Manager)+import qualified Text.Email.Validate           as TEV++data VerifyDomainRq =+  VerifyDomainRq+  { _vdrq_key     :: MandrillKey+  , _vdrq_domain  :: Text+  , _vdrq_mailbox :: Text+  } deriving Show++makeLenses ''VerifyDomainRq+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''VerifyDomainRq++data VerifyDomainResponse =+  VerifyDomainResponse+  { _vdres_status :: Text+  , _vdres_domain :: Text+  , _vdres_email  :: MandrillEmail+  } deriving Show++makeLenses ''VerifyDomainResponse+deriveJSON defaultOptions { fieldLabelModifier = drop 7 } ''VerifyDomainResponse+++verifyDomain :: MandrillKey+                -- ^ The API key+                -> TEV.EmailAddress+                -- ^ Email address to use for verification+                -> Maybe Manager+                -> IO (MandrillResponse VerifyDomainResponse)+verifyDomain k email =+  toMandrillResponse VerifyDomain+  (VerifyDomainRq k  (decodeUtf8 $ TEV.domainPart email) (decodeUtf8 $ TEV.localPart email))
src/Network/API/Mandrill/Settings.hs view
@@ -19,6 +19,8 @@   -- Inbound API   | RoutesAdd   | DomainsAdd+  -- Senders API+  | VerifyDomain    deriving Show @@ -35,3 +37,4 @@   toUrl MessagesSearch       = "messages/search.json"   toUrl DomainsAdd           = "inbound/add-domain.json"   toUrl RoutesAdd            = "inbound/add-route.json"+  toUrl VerifyDomain         = "senders/verify-domain.json"
src/Network/API/Mandrill/Types.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE CPP                 #-}-{-# LANGUAGE DeriveFunctor       #-} {-# LANGUAGE DeriveFoldable      #-}+{-# LANGUAGE DeriveFunctor       #-} {-# LANGUAGE DeriveTraversable   #-} {-# LANGUAGE OverloadedStrings   #-} {-# LANGUAGE RankNTypes          #-}@@ -9,6 +9,7 @@ module Network.API.Mandrill.Types where  import           Control.Applicative+import           Control.Monad                 (mzero) import           Data.Char import           Data.Maybe import           Data.Time@@ -37,7 +38,7 @@ import qualified Data.Text.Lazy                as TL import qualified Text.Blaze.Html               as Blaze import qualified Text.Blaze.Html.Renderer.Text as Blaze-+import qualified Text.Email.Validate           as TEV  timeParse :: ParseTime t => TimeLocale -> String -> String -> Maybe t #if MIN_VERSION_time(1,5,0)
test/Main.hs view
@@ -44,5 +44,6 @@          , testCase "messages/send.json API response parsing" testMessagesResponseRejected          , testCase "inbound/add-route.json API response parsing" testRouteAdd          , testCase "inbound/add-domain.json API response parsing" testDomainAdd+         , testCase "senders/verify-domain.json API response parsing" testVerifyDomain          ]      ]
test/RawData.hs view
@@ -228,3 +228,11 @@     "url": "http://example.com/webhook-url" } |]++domainVerify = [r|+{+    "status": "example status",+    "domain": "example domain",+    "email": "email@domain.com"+}+|]
test/Tests.hs view
@@ -6,6 +6,7 @@ import           Data.Either import           Network.API.Mandrill.Inbound import           Network.API.Mandrill.Messages.Types+import           Network.API.Mandrill.Senders import           Network.API.Mandrill.Types import           Network.API.Mandrill.Users.Types import           RawData@@ -67,3 +68,11 @@   where     parsePayload :: Either String RouteAddResponse     parsePayload = eitherDecodeStrict . C8.pack $ routeAdd++testVerifyDomain :: Assertion+testVerifyDomain =+  assertBool ("senders/verify-domain.json" ++ show parsePayload)+             (isRight parsePayload)+  where+    parsePayload ::  Either String VerifyDomainResponse+    parsePayload = eitherDecodeStrict . C8.pack $ domainVerify