packages feed

mime-mail-ses 0.0.0.5 → 0.1.0

raw patch · 2 files changed

+18/−21 lines, 2 filesdep +conduitdep +http-conduitdep +http-typesdep −http-enumeratorPVP ok

version bump matches the API change (PVP)

Dependencies added: conduit, http-conduit, http-types, transformers

Dependencies removed: http-enumerator

API changes (from Hackage documentation)

- Network.Mail.Mime.SES: SESException :: Response -> SESException
- Network.Mail.Mime.SES: data SESException
- Network.Mail.Mime.SES: instance Exception SESException
- Network.Mail.Mime.SES: instance Show SESException
- Network.Mail.Mime.SES: instance Typeable SESException
- Network.Mail.Mime.SES: renderSendMailSES :: SES -> Mail -> IO ()
+ Network.Mail.Mime.SES: renderSendMailSES :: ResourceIO m => Manager -> SES -> Mail -> ResourceT m ()
- Network.Mail.Mime.SES: sendMailSES :: SES -> ByteString -> IO ()
+ Network.Mail.Mime.SES: sendMailSES :: ResourceIO m => Manager -> SES -> ByteString -> ResourceT m ()

Files

Network/Mail/Mime/SES.hs view
@@ -1,16 +1,15 @@ {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DeriveDataTypeable #-} module Network.Mail.Mime.SES     ( sendMailSES     , renderSendMailSES     , SES (..)-    , SESException (..)     ) where  import Data.ByteString (ByteString) import Network.Mail.Mime (Mail, renderMail') import qualified Data.ByteString.Lazy as L-import Network.HTTP.Enumerator+import Network.HTTP.Conduit (httpLbs, Manager, parseUrl, queryString, requestHeaders)+import Network.HTTP.Types (renderQuery) import Data.Time.Format (formatTime) import System.Locale (defaultTimeLocale) import Data.Time (getCurrentTime)@@ -19,9 +18,8 @@ import Crypto.Hash.SHA256 (SHA256) import Data.ByteString.Base64 (encode) import qualified Data.Serialize as S-import Control.Exception (Exception, throwIO)-import Data.Typeable (Typeable)-import Control.Monad (unless)+import Control.Monad.Trans.Resource (ResourceIO, ResourceT)+import Control.Monad.IO.Class (liftIO)  data SES = SES     { sesFrom :: ByteString@@ -30,15 +28,15 @@     , sesSecretKey :: ByteString     } -renderSendMailSES :: SES -> Mail -> IO ()-renderSendMailSES ses mail = renderMail' mail >>= sendMailSES ses+renderSendMailSES :: ResourceIO m => Manager -> SES -> Mail -> ResourceT m ()+renderSendMailSES m ses mail = liftIO (renderMail' mail) >>= sendMailSES m ses -sendMailSES :: SES -> L.ByteString -> IO ()-sendMailSES ses msg = do-    now <- getCurrentTime+sendMailSES :: ResourceIO m => Manager -> SES -> L.ByteString -> ResourceT m ()+sendMailSES manager ses msg = do+    now <- liftIO getCurrentTime     let date = S8.pack $ format now         sig = makeSig date $ sesSecretKey ses-    req' <- parseUrl "https://email.us-east-1.amazonaws.com"+    req' <- liftIO $ parseUrl "https://email.us-east-1.amazonaws.com"     let auth = S8.concat             [ "AWS3-HTTPS AWSAccessKeyId="             , sesAccessKey ses@@ -46,14 +44,14 @@             , sig             ]     let req = req'-            { queryString = qs+            { queryString = renderQuery False qs             , requestHeaders =                 [ ("Date", date)                 , ("X-Amzn-Authorization", auth)                 ]             }-    res <- withManager $ httpLbs req-    unless (statusCode res == 200) $ throwIO $ SESException res+    _ <- httpLbs req manager+    return ()   where     qs =           ("Action", Just "SendRawEmail")@@ -72,7 +70,3 @@   where     x :: SHA256     x = undefined--data SESException = SESException Response-    deriving (Show, Typeable)-instance Exception SESException
mime-mail-ses.cabal view
@@ -1,5 +1,5 @@ Name:                mime-mail-ses-Version:             0.0.0.5+Version:             0.1.0 Synopsis:            Send mime-mail messages via Amazon SES Homepage:            http://github.com/snoyberg/mime-mail-ses License:             BSD3@@ -20,6 +20,9 @@                      , bytestring         >= 0.9       && < 0.10                      , time               >= 1.1                      , old-locale-                     , http-enumerator    >= 0.6       && < 0.8+                     , http-conduit       >= 1.2       && < 1.3                      , mime-mail          >= 0.3       && < 0.5+                     , conduit+                     , transformers       >= 0.2+                     , http-types         >= 0.6.8     && < 0.7   ghc-options: -Wall