hailgun 0.5.0 → 0.5.1
raw patch · 8 files changed
+51/−9 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Changelog.md +4/−0
- Mail/Hailgun/Communication.hs +13/−0
- Mail/Hailgun/Domains.hs +10/−2
- Mail/Hailgun/Errors.hs +3/−0
- Mail/Hailgun/Internal/Data.hs +10/−1
- Mail/Hailgun/Message.hs +0/−1
- Mail/Hailgun/SendEmail.hs +10/−4
- hailgun.cabal +1/−1
Changelog.md view
@@ -1,3 +1,7 @@+## 0.5.1++- Minor cleanups (see commit 1bb4746eaf3fbc100b9003da771eb4198a8a198a)+ ## 0.5.0 - [PR #26](https://bitbucket.org/echo_rm/hailgun/pull-requests/26/) Support named emails
Mail/Hailgun/Communication.hs view
@@ -13,7 +13,9 @@ import Data.Aeson import qualified Data.ByteString.Char8 as BC import qualified Data.ByteString.Lazy.Char8 as BLC+#if __GLASGOW_HASKELL__ < 806 import Data.Foldable (foldMap)+#endif import Data.Monoid import Mail.Hailgun.Errors import Mail.Hailgun.Internal.Data@@ -28,7 +30,11 @@ getRequest :: (MonadThrow m) => String -> HailgunContext -> [(BC.ByteString, Maybe BC.ByteString)] -> m NC.Request getRequest url context queryParams = do+#if MIN_VERSION_http_client(0,5,0)+ initRequest <- NC.parseUrlThrow url+#else initRequest <- NC.parseUrl url+#endif let request = appEndo (applyHailgunAuth context) $ initRequest { NC.method = NM.methodGet@@ -41,7 +47,11 @@ postRequest :: (MonadThrow m, MonadIO m) => String -> HailgunContext -> [Part] -> m NC.Request postRequest url context parts = do+#if MIN_VERSION_http_client(0,5,0)+ initRequest <- NC.parseUrlThrow url+#else initRequest <- NC.parseUrl url+#endif let request = initRequest { NC.method = NM.methodPost #if MIN_VERSION_http_client(0,5,0)@@ -77,5 +87,8 @@ responseDecode :: (FromJSON a) => NC.Response BLC.ByteString -> Either HailgunErrorResponse a responseDecode = mapError . eitherDecode . NC.responseBody +#if MIN_VERSION_http_client(0,5,0)+#else ignoreStatus :: a -> b -> c -> Maybe d ignoreStatus _ _ _ = Nothing+#endif
Mail/Hailgun/Domains.hs view
@@ -1,10 +1,13 @@+{-# LANGUAGE CPP #-} module Mail.Hailgun.Domains ( getDomains , HailgunDomainResponse(..) , HailgunDomain(..) ) where +#if __GLASGOW_HASKELL__ < 800 import Control.Applicative+#endif import Control.Monad (mzero) import Data.Aeson import qualified Data.Text as T@@ -13,7 +16,7 @@ import Mail.Hailgun.Internal.Data import Mail.Hailgun.MailgunApi import Mail.Hailgun.Pagination-import Network.HTTP.Client (httpLbs, withManager)+import qualified Network.HTTP.Client as NC import Network.HTTP.Client.TLS (tlsManagerSettings) -- | Make a request to Mailgun for the domains against your account. This is a paginated request so you must specify@@ -24,7 +27,12 @@ -> IO (Either HailgunErrorResponse HailgunDomainResponse) -- ^ The IO response which is either an error or the list of domains. getDomains context page = do request <- getRequest url context (toQueryParams . pageToParams $ page)- response <- withManager tlsManagerSettings (httpLbs request)+#if MIN_VERSION_http_client(0,5,0)+ mgr <- NC.newManager tlsManagerSettings+ response <- NC.httpLbs request mgr+#else+ response <- NC.withManager tlsManagerSettings (NC.httpLbs request)+#endif return $ parseResponse response where url = mailgunApiPrefix ++ "/domains"
Mail/Hailgun/Errors.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} module Mail.Hailgun.Errors ( HailgunErrorResponse(..) -- TODO Make it so that herMessage is a hidden detail in the next version , toHailgunError@@ -7,7 +8,9 @@ , mapError ) where +#if __GLASGOW_HASKELL__ < 800 import Control.Applicative+#endif import Control.Monad (mzero) import Data.Aeson import qualified Data.Text as T
Mail/Hailgun/Internal/Data.hs view
@@ -16,19 +16,24 @@ , AttachmentType(..) ) where +#if __GLASGOW_HASKELL__ < 800 import Control.Applicative+#endif import Data.Aeson import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import Data.Time.Clock (UTCTime (..))+#if MIN_VERSION_time(1,6,0)+import Data.Time.Format (ParseTime (..), parseTimeM)+#else import Data.Time.Format (ParseTime (..), parseTime)+#endif #if MIN_VERSION_time(1,9,0) import Data.Time.Format.Internal (ParseTime (..)) #endif import Data.Time.LocalTime (zonedTimeToUTC) import qualified Network.HTTP.Client as NHC-import qualified Text.Email.Validate as TEV #if MIN_VERSION_time(1,5,0) import Data.Time.Format (defaultTimeLocale)@@ -156,7 +161,11 @@ -- Example Input: 'Thu, 13 Oct 2011 18:02:00 GMT' instance FromJSON HailgunTime where parseJSON = withText "HailgunTime" $ \t ->+#if MIN_VERSION_time(1,6,0)+ case parseTimeM True defaultTimeLocale "%a, %d %b %Y %T %Z" (T.unpack t) of+#else case parseTime defaultTimeLocale "%a, %d %b %Y %T %Z" (T.unpack t) of+#endif Just d -> pure d _ -> fail "could not parse Mailgun Style date"
Mail/Hailgun/Message.hs view
@@ -3,7 +3,6 @@ ) where import Control.Applicative-import Data.Either (either) import qualified Data.ByteString.Char8 as BC import qualified Data.Text as T import Data.Text.Encoding (encodeUtf8, decodeUtf8)
Mail/Hailgun/SendEmail.hs view
@@ -1,9 +1,12 @@+{-# LANGUAGE CPP #-} module Mail.Hailgun.SendEmail ( sendEmail , HailgunSendResponse(..) ) where +#if __GLASGOW_HASKELL__ < 800 import Control.Applicative+#endif import Control.Monad (mzero) import Data.Aeson import qualified Data.ByteString.Char8 as BC@@ -14,11 +17,9 @@ import Mail.Hailgun.Internal.Data import Mail.Hailgun.MailgunApi import Mail.Hailgun.PartUtil-import Network.HTTP.Client (httpLbs, withManager)+import qualified Network.HTTP.Client as NC import qualified Network.HTTP.Client.MultipartFormData as NCM import Network.HTTP.Client.TLS (tlsManagerSettings)-import Text.Email.Validate (EmailAddress,- toByteString) -- | Send an email using the Mailgun API's. This method is capable of sending a message over the -- Mailgun service. All it needs is the appropriate context.@@ -28,7 +29,12 @@ -> IO (Either HailgunErrorResponse HailgunSendResponse) -- ^ The result of the sent email. Either a sent email or a successful send. sendEmail context message = do request <- postRequest url context (toEmailParts message)- response <- withManager tlsManagerSettings (httpLbs request)+#if MIN_VERSION_http_client(0,5,0)+ mgr <- NC.newManager tlsManagerSettings+ response <- NC.httpLbs request mgr+#else+ response <- NC.withManager tlsManagerSettings (NC.httpLbs request)+#endif return $ parseResponse response where url = mailgunApiPrefixContext context ++ "/messages"
hailgun.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.5.0+version: 0.5.1 -- A short (one-line) description of the package. synopsis: Mailgun REST api interface for Haskell.