@@ -14,16 +14,80 @@ import Data.Aeson.TH
15import Network.API.Mandrill.Types
15import Network.API.Mandrill.Types
17--------------------------------------------------------------------------------
18--------------------------------------------------------------------------------
18data UsersRq = UsersRq {
19data UsersRq = UsersRq {
19− _ureq_key :: MandrillKey
20+ _ureq_key :: !MandrillKey
20 } deriving Show
21 } deriving Show
22makeLenses ''UsersRq
23makeLenses ''UsersRq
23deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersRq
24deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersRq
25--------------------------------------------------------------------------------
26--------------------------------------------------------------------------------
26−data UsersResponse = UsersResponse {
27+data MandrillStats = MandrillStats {
29+ , _msts_hard_bounces :: Int
30+ , _msts_soft_bounces :: Int
31+ , _msts_rejects :: Int
32+ , _msts_complaints :: Int
33+ , _msts_unsubs :: Int
35+ , _msts_unique_opens :: Int
36+ , _msts_clicks :: Int
37+ , _msts_unique_clicks :: Int
40+makeLenses ''MandrillStats
41+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''MandrillStats
43+--------------------------------------------------------------------------------
44+data UserStats = UserStats {
45+ _usts_today :: MandrillStats
46+ , _usts_last_7_days :: MandrillStats
47+ , _usts_last_30_days :: MandrillStats
48+ , _usts_last_60_days :: MandrillStats
49+ , _usts_last_90_days :: MandrillStats
50+ , _usts_all_time :: MandrillStats
53+makeLenses ''UserStats
54+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UserStats
56+--------------------------------------------------------------------------------
57+data UsersInfoResponse = UsersInfoResponse {
58+ _usir_username :: !T.Text
59+ , _usir_created_at :: MandrillDate
60+ , _usir_public_id :: !T.Text
61+ , _usir_reputation :: !Int
62+ , _usir_hourly_quota :: !Int
63+ , _usir_backlog :: !Int
64+ , _usir_stats :: UserStats
67+makeLenses ''UsersInfoResponse
68+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersInfoResponse
71+--------------------------------------------------------------------------------
72+newtype UsersPingResponse = UsersPingResponse T.Text deriving Show
74+deriveFromJSON defaultOptions ''UsersPingResponse
76+instance ToJSON UsersPingResponse where
77+ toJSON (UsersPingResponse t) = String t
80+--------------------------------------------------------------------------------
81+data UsersPing2Response = UsersPing2Response {
85+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersPing2Response
89+--------------------------------------------------------------------------------
90+data UsersSendersResponse = UsersResponse {
27 _usrr_address :: !T.Text
91 _usrr_address :: !T.Text
28 -- ^ The sender's email address
92 -- ^ The sender's email address
29 , _usrr_created_at :: MandrillDate
93 , _usrr_created_at :: MandrillDate
@@ -54,5 +118,5 @@ data UsersResponse = UsersResponse {
54 -- ^ The number of unique clicks for emails sent for this sender
118 -- ^ The number of unique clicks for emails sent for this sender
55 } deriving Show
119 } deriving Show
57−makeLenses ''UsersResponse
121+makeLenses ''UsersSendersResponse
58−deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersResponse
122+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersSendersResponse