@@ -1,70 +0,0 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE TemplateHaskell #-}
3−module Network.API.Mandrill.Webhooks where
4−import Control.Applicative (pure)
5−import Control.Monad (mzero)
6−import Data.Aeson (FromJSON, ToJSON, parseJSON,
7− toJSON)
8−import Data.Aeson (Value (String))
9−import Data.Aeson.TH (defaultOptions, deriveJSON)
10−import Data.Aeson.Types (fieldLabelModifier)
11−import Data.Set (Set)
12−import Data.Text (Text)
13−import qualified Data.Text as T
14−import Lens.Micro.TH (makeLenses)
15−import Network.API.Mandrill.HTTP (toMandrillResponse)
16−import Network.API.Mandrill.Settings
17−import Network.API.Mandrill.Types
18−import Network.HTTP.Client (Manager)
19−
20−data EventHook
21− = EventSent
22− | EventDeferred
23− | EventHardBounced
24− | EventSoftBounced
25− | EventOpened
26− | EventClicked
27− | EventMarkedAsSpam
28− | EventUnsubscribed
29− | EventRejected
30− deriving (Ord,Eq)
31−
32−instance Show EventHook where
33− show e = case e of
34− EventSent -> "send"
35− EventDeferred -> "deferral"
36− EventSoftBounced -> "soft_bounce"
37− EventHardBounced -> "hard_bounce"
38− EventOpened -> "open"
39− EventClicked -> "click"
40− EventMarkedAsSpam -> "spam"
41− EventUnsubscribed -> "unsub"
42− EventRejected -> "reject"
43−instance FromJSON EventHook where
44− parseJSON (String s) =
45− case s of
46− "send" -> pure EventSent
47− "deferral" -> pure EventDeferred
48− "soft_bounce" -> pure EventSoftBounced
49− "hard_bounce" -> pure EventHardBounced
50− "open" -> pure EventOpened
51− "click" -> pure EventClicked
52− "spam" -> pure EventMarkedAsSpam
53− "reject" -> pure EventRejected
54− "unsub" -> pure EventUnsubscribed
55− x -> fail ("can't parse " ++ show x)
56−
57−
58−instance ToJSON EventHook where
59− toJSON e = String (T.pack $ show e)
60−
61−data WebhookAddRq =
62− WebhookAddRq
63− { _warq_key :: MandrillKey
64− , _warq_url :: Text
65− , _warq_description :: Text
66− , _warq_events :: Set EventHook
67− } deriving Show
68−
69−makeLenses ''WebhookAddRq
70−deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''WebhookAddRq