packages feed

postmark 0.2.0 → 0.2.1

raw patch · 5 files changed

+76/−2 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Network.Api.Postmark.Data: instance Data.Aeson.Types.Class.FromJSON Network.Api.Postmark.Data.Sent
- Network.Api.Postmark.Data: instance Data.Aeson.Types.Class.ToJSON Network.Api.Postmark.Data.Attachment
- Network.Api.Postmark.Data: instance Data.Aeson.Types.Class.ToJSON Network.Api.Postmark.Data.Email
- Network.Api.Postmark.Error: instance Data.Aeson.Types.Class.FromJSON Network.Api.Postmark.Error.PostmarkError
+ Network.Api.Postmark.Core: emailWithTemplate :: EmailWithTemplate -> PostmarkRequest' Sent
+ Network.Api.Postmark.Data: EmailWithTemplate :: Int -> Map Text Text -> Bool -> Text -> [Text] -> [Text] -> [Text] -> Maybe Text -> Text -> Map Text Text -> [Attachment] -> EmailWithTemplate
+ Network.Api.Postmark.Data: [emailAttachments'] :: EmailWithTemplate -> [Attachment]
+ Network.Api.Postmark.Data: [emailBcc'] :: EmailWithTemplate -> [Text]
+ Network.Api.Postmark.Data: [emailCc'] :: EmailWithTemplate -> [Text]
+ Network.Api.Postmark.Data: [emailFrom'] :: EmailWithTemplate -> Text
+ Network.Api.Postmark.Data: [emailHeaders'] :: EmailWithTemplate -> Map Text Text
+ Network.Api.Postmark.Data: [emailReplyTo'] :: EmailWithTemplate -> Text
+ Network.Api.Postmark.Data: [emailTag'] :: EmailWithTemplate -> Maybe Text
+ Network.Api.Postmark.Data: [emailTo'] :: EmailWithTemplate -> [Text]
+ Network.Api.Postmark.Data: [inlineCss] :: EmailWithTemplate -> Bool
+ Network.Api.Postmark.Data: [templateId] :: EmailWithTemplate -> Int
+ Network.Api.Postmark.Data: [templateModel] :: EmailWithTemplate -> Map Text Text
+ Network.Api.Postmark.Data: data EmailWithTemplate
+ Network.Api.Postmark.Data: defaultEmailWithTemplate :: EmailWithTemplate
+ Network.Api.Postmark.Data: instance Data.Aeson.Types.FromJSON.FromJSON Network.Api.Postmark.Data.Sent
+ Network.Api.Postmark.Data: instance Data.Aeson.Types.ToJSON.ToJSON Network.Api.Postmark.Data.Attachment
+ Network.Api.Postmark.Data: instance Data.Aeson.Types.ToJSON.ToJSON Network.Api.Postmark.Data.Email
+ Network.Api.Postmark.Data: instance Data.Aeson.Types.ToJSON.ToJSON Network.Api.Postmark.Data.EmailWithTemplate
+ Network.Api.Postmark.Error: PostmarkTemplateFieldInvalid :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateFieldTooLarge :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateLimitWouldBeExceeded :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateNoDataReceived :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateNotFound :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateQueryException :: PostmarkErrorType
+ Network.Api.Postmark.Error: PostmarkTemplateRequiredFieldMissing :: PostmarkErrorType
+ Network.Api.Postmark.Error: instance Data.Aeson.Types.FromJSON.FromJSON Network.Api.Postmark.Error.PostmarkError

Files

postmark.cabal view
@@ -1,5 +1,5 @@ Name:               postmark-Version:            0.2.0+Version:            0.2.1 License:            BSD3 License-File:       LICENSE Author:             Mark Hibberd <mark@hibberd.id.au>
src/Network/Api/Postmark/Core.hs view
@@ -2,6 +2,7 @@ module Network.Api.Postmark.Core (   email,   emails,+  emailWithTemplate,   request ) where @@ -28,6 +29,9 @@ emails :: [Email] -> PostmarkRequest' [Sent] emails es = PostmarkRequest POST "/email/batch" $ setJson es +-- | Send a single email using a template: https://postmarkapp.com/developer/api/templates-api#email-with-template+emailWithTemplate :: EmailWithTemplate -> PostmarkRequest' Sent+emailWithTemplate ewt = PostmarkRequest POST "/email/withTemplate" $ setJson ewt  -- * Run a request 
src/Network/Api/Postmark/Data.hs view
@@ -41,6 +41,20 @@   , attachmentContentType :: Text   } +data EmailWithTemplate = EmailWithTemplate {+    templateId :: Int+  , templateModel :: Map Text Text+  , inlineCss :: Bool+  , emailFrom' :: Text+  , emailTo' :: [Text]+  , emailCc' :: [Text]+  , emailBcc' :: [Text]+  , emailTag' :: Maybe Text+  , emailReplyTo' :: Text+  , emailHeaders' :: Map Text Text+  , emailAttachments' :: [Attachment]+  }+ defaultEmail :: Email defaultEmail = Email {     emailFrom = ""@@ -56,6 +70,20 @@   , emailAttachments = []   } +defaultEmailWithTemplate :: EmailWithTemplate+defaultEmailWithTemplate = EmailWithTemplate {+    templateId = 0+  , templateModel = M.empty+  , inlineCss = False+  , emailFrom' = ""+  , emailTo' = []+  , emailCc' = []+  , emailBcc' = []+  , emailTag' = Nothing+  , emailReplyTo' = ""+  , emailHeaders' = M.empty+  , emailAttachments' = []+  }  instance ToJSON Email where   toJSON v = object ([@@ -80,6 +108,20 @@     , "ContentType" .= attachmentContentType v     ] +instance ToJSON EmailWithTemplate where+  toJSON v = object ([+      "TemplateId" .= templateId v+    , "TemplateModel" .= templateModel v+    , "From" .= (emailFrom' v)+    , "To" .= T.intercalate "," (emailTo' v)+    , "ReplyTo" .= emailReplyTo' v+    ] ++ catMaybes [+      ojson "Tag" (emailTag' v)+    , oljson "Cc" (emailCc' v) (T.intercalate ",")+    , oljson "Bcc" (emailBcc' v) (T.intercalate ",")+    , omjson "Headers" (emailHeaders' v)+    , oljson "Attachments" (emailAttachments' v) id+    ]) -- * Response types  data Sent =
src/Network/Api/Postmark/Error.hs view
@@ -25,6 +25,13 @@   | PostmarkBounceQueryException   | PostmarkJsonRequired   | PostmarkTooManyMessages+  | PostmarkTemplateQueryException+  | PostmarkTemplateNotFound+  | PostmarkTemplateLimitWouldBeExceeded+  | PostmarkTemplateNoDataReceived+  | PostmarkTemplateRequiredFieldMissing+  | PostmarkTemplateFieldTooLarge+  | PostmarkTemplateFieldInvalid   | PostmarkUnkownError Int   deriving Eq @@ -44,6 +51,13 @@           408 -> PostmarkBounceQueryException           409 -> PostmarkJsonRequired           410 -> PostmarkTooManyMessages+          1100 -> PostmarkTemplateQueryException+          1101 -> PostmarkTemplateNotFound+          1105 -> PostmarkTemplateLimitWouldBeExceeded+          1109 -> PostmarkTemplateNoDataReceived+          1120 -> PostmarkTemplateRequiredFieldMissing+          1121 -> PostmarkTemplateFieldTooLarge+          1122 -> PostmarkTemplateFieldInvalid           _ -> PostmarkUnkownError code) (o .: "ErrorCode"))     <*> (o .: "Message")   parseJSON _ = fail "Invalid Postmark Error Response"@@ -73,5 +87,19 @@     "Your HTTP request does not have the Accept and Content-Type headers set to application/json."   show PostmarkTooManyMessages =     "Your batched request contains more than 500 messages."+  show PostmarkTemplateQueryException =+    "The value of a GET parameter for the request is not valid."+  show PostmarkTemplateNotFound =+     "TemplateId not found. The TemplateId references a Template that does not exist, or is not associated with the Server specified for this request."+  show PostmarkTemplateLimitWouldBeExceeded =+     "Template limit would be exceeded. A Server may have up to 300 active templates, processing this request would exceed this limit."+  show PostmarkTemplateNoDataReceived =+      "No Template data received. You didn’t provide JSON body parameters in your request. Refer to the Template API reference for more details on required parameters."+  show PostmarkTemplateRequiredFieldMissing =+      "A required Template field is missing. A required field is missing from the body of the POST request."+  show PostmarkTemplateFieldTooLarge =+      "Template field is too large. One of the values of the request's body exceeds our size restrictions for that field."+  show PostmarkTemplateFieldInvalid =+      "A Templated field has been submitted that is invalid. One of the fields of the request body is invalid."   show (PostmarkUnkownError code) =     "An unexpected error code [" ++ show code ++ "] was retured from postmark."
src/Network/Api/Postmark/Tutorial.hs view
@@ -50,7 +50,7 @@  > import Network.Api.Postmark >-> demo = request postmarkHttpTrest $ emails [+> demo = request postmarkHttpTest $ emails [ >     defaultEmail { >       emailFrom = "demo-from@postmark.hs" >     , emailTo = ["demo-to@postmark.hs"]