packages feed

hailgun 0.4.3 → 0.5.0

raw patch · 5 files changed

+41/−18 lines, 5 filesdep +attoparsecPVP ok

version bump matches the API change (PVP)

Dependencies added: attoparsec

API changes (from Hackage documentation)

- Mail.Hailgun.Internal: HailgunMessage :: MessageSubject -> MessageContent -> EmailAddress -> [EmailAddress] -> [EmailAddress] -> [EmailAddress] -> [SpecificAttachment] -> HailgunMessage
+ Mail.Hailgun.Internal: HailgunMessage :: MessageSubject -> MessageContent -> VerifiedEmailAddress -> [VerifiedEmailAddress] -> [VerifiedEmailAddress] -> [VerifiedEmailAddress] -> [SpecificAttachment] -> HailgunMessage
- Mail.Hailgun.Internal: [messageBCC] :: HailgunMessage -> [EmailAddress]
+ Mail.Hailgun.Internal: [messageBCC] :: HailgunMessage -> [VerifiedEmailAddress]
- Mail.Hailgun.Internal: [messageCC] :: HailgunMessage -> [EmailAddress]
+ Mail.Hailgun.Internal: [messageCC] :: HailgunMessage -> [VerifiedEmailAddress]
- Mail.Hailgun.Internal: [messageFrom] :: HailgunMessage -> EmailAddress
+ Mail.Hailgun.Internal: [messageFrom] :: HailgunMessage -> VerifiedEmailAddress
- Mail.Hailgun.Internal: [messageTo] :: HailgunMessage -> [EmailAddress]
+ Mail.Hailgun.Internal: [messageTo] :: HailgunMessage -> [VerifiedEmailAddress]

Files

Changelog.md view
@@ -1,7 +1,11 @@+## 0.5.0++- [PR #26](https://bitbucket.org/echo_rm/hailgun/pull-requests/26/) Support named emails+ ## 0.4.3 -Fix build for lts-15.1 and time-1.9.3+- Fix build for lts-15.1 and time-1.9.3  ## 0.4.2 -Adds `Mail.Hailgun.Internal` module, which exposes private APIs for constructing a `HailgunMessage`.+- Adds `Mail.Hailgun.Internal` module, which exposes private APIs for constructing a `HailgunMessage`.
Mail/Hailgun/Internal/Data.hs view
@@ -5,6 +5,7 @@     , MessageSubject     , MessageContent(..)     , UnverifiedEmailAddress+    , VerifiedEmailAddress     , MessageRecipients(..)     , emptyMessageRecipients     , HailgunErrorMessage@@ -36,6 +37,7 @@ #endif  type UnverifiedEmailAddress = B.ByteString -- ^ Represents an email address that is not yet verified.+type VerifiedEmailAddress = B.ByteString -- ^ Represents an email address that has been verified. type MessageSubject = T.Text -- ^ Represents a message subject.  -- | A generic error message that is returned by the Hailgun library.@@ -82,10 +84,10 @@ data HailgunMessage = HailgunMessage    { messageSubject     :: MessageSubject    , messageContent     :: MessageContent-   , messageFrom        :: TEV.EmailAddress-   , messageTo          :: [TEV.EmailAddress]-   , messageCC          :: [TEV.EmailAddress]-   , messageBCC         :: [TEV.EmailAddress]+   , messageFrom        :: VerifiedEmailAddress+   , messageTo          :: [VerifiedEmailAddress]+   , messageCC          :: [VerifiedEmailAddress]+   , messageBCC         :: [VerifiedEmailAddress]    , messageAttachments :: [SpecificAttachment]    }    deriving (Show)
Mail/Hailgun/Message.hs view
@@ -3,12 +3,16 @@     ) where  import           Control.Applicative-import qualified Data.ByteString.Char8            as BC-import           Data.List                        (find)+import           Data.Either                        (either)+import qualified Data.ByteString.Char8              as BC+import qualified Data.Text                          as T+import           Data.Text.Encoding                 (encodeUtf8, decodeUtf8)+import           Data.List                          (find) import           Mail.Hailgun.Attachment.Internal import           Mail.Hailgun.AttachmentsSearch import           Mail.Hailgun.Internal.Data import           Text.Email.Validate+import           Data.Attoparsec.Text  -- | A method to construct a HailgunMessage. You require a subject, content, From address and people -- to send the email to and it will give you back a valid Hailgun email message. Or it will error@@ -21,10 +25,10 @@    -> [Attachment] -- ^ The attachments that you want to attach to the email; standard or inline.    -> Either HailgunErrorMessage HailgunMessage -- ^ Either an error while trying to create a valid message or a valid message. hailgunMessage subject content sender recipients simpleAttachments = do-   from  <- validate sender-   to    <- mapM validate (recipientsTo recipients)-   cc    <- mapM validate (recipientsCC recipients)-   bcc   <- mapM validate (recipientsBCC recipients)+   from  <- validateRecipient sender+   to    <- mapM validateRecipient (recipientsTo recipients)+   cc    <- mapM validateRecipient (recipientsCC recipients)+   bcc   <- mapM validateRecipient (recipientsBCC recipients)    attachments <- attachmentsInferredFromMessage content cleanAttachments    return HailgunMessage       { messageSubject = subject@@ -37,6 +41,17 @@       }    where       cleanAttachments = fmap cleanAttachmentFilePath simpleAttachments++extractEmail :: T.Text -> Either String T.Text+extractEmail = parseOnly+   $ many (satisfy (/= '<')) *> char '<' *> (T.pack <$> many (satisfy (/= '>')) <* char '>')+   <|> T.pack <$> many anyChar++validateEmail :: T.Text -> Either String EmailAddress+validateEmail e = validate . encodeUtf8 =<< extractEmail e++validateRecipient :: UnverifiedEmailAddress -> Either String VerifiedEmailAddress+validateRecipient ue = ue <$ validateEmail (decodeUtf8 ue)  attachmentsInferredFromMessage :: MessageContent -> [Attachment] -> Either String [SpecificAttachment] attachmentsInferredFromMessage mContent simpleAttachments =
Mail/Hailgun/SendEmail.hs view
@@ -41,7 +41,7 @@  toSimpleEmailParts :: HailgunMessage -> [(BC.ByteString, BC.ByteString)] toSimpleEmailParts message =-   [ (BC.pack "from", toByteString . messageFrom $ message)+   [ (BC.pack "from", messageFrom message)    , (BC.pack "subject", T.encodeUtf8 $ messageSubject message)    ] ++ to    ++ cc@@ -56,8 +56,8 @@       fromContent t@(TextOnly _) = [ (BC.pack "text", textContent t) ]       fromContent th@(TextAndHTML {}) = (BC.pack "html", htmlContent th) : fromContent (TextOnly . textContent $ th) -      convertEmails :: BC.ByteString -> [EmailAddress] -> [(BC.ByteString, BC.ByteString)]-      convertEmails prefix = fmap ((,) prefix . toByteString)+      convertEmails :: BC.ByteString -> [VerifiedEmailAddress] -> [(BC.ByteString, BC.ByteString)]+      convertEmails prefix = fmap ((,) prefix)  -- TODO replace with MailgunSendResponse -- | The response to an email being accepted by the Mailgun API.
hailgun.cabal view
@@ -10,7 +10,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.4.3+version:             0.5.0  -- A short (one-line) description of the package. synopsis:            Mailgun REST api interface for Haskell.@@ -27,11 +27,11 @@ license-file:        LICENSE  -- The package author(s).-author:              Robert Massaioli+author:              Robert Massaioli <robertmassaioli@gmail.com>  -- An email address to which users can send suggestions, bug reports, and  -- patches.-maintainer:          robertmassaioli@gmail.com+maintainer:          Konstantine Rybnikov <k-bx@k-bx.com>  -- A copyright notice. copyright:           (c) 2014-2018 Robert Massaioli@@ -84,6 +84,8 @@                         , tagsoup            >= 0.13 && < 0.15                         , text               == 1.2.*                         , transformers       >= 0.3 && < 0.6+                        , filepath           >= 1 && < 2+                        , attoparsec         >= 0.13 && < 0.14     if flag(newtime)       Build-Depends:    time >= 1.5