@@ -14,16 +14,80 @@ import Data.Aeson.TH
1414
1515import Network.API.Mandrill.Types
1616
17+
1718--------------------------------------------------------------------------------
1819data UsersRq = UsersRq {
19− _ureq_key :: MandrillKey
20+ _ureq_key :: !MandrillKey
2021 } deriving Show
2122
2223makeLenses ''UsersRq
2324deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersRq
2425
2526--------------------------------------------------------------------------------
26−data UsersResponse = UsersResponse {
27+data MandrillStats = MandrillStats {
28+ _msts_sent :: Int
29+ , _msts_hard_bounces :: Int
30+ , _msts_soft_bounces :: Int
31+ , _msts_rejects :: Int
32+ , _msts_complaints :: Int
33+ , _msts_unsubs :: Int
34+ , _msts_opens :: Int
35+ , _msts_unique_opens :: Int
36+ , _msts_clicks :: Int
37+ , _msts_unique_clicks :: Int
38+ } deriving Show
39+
40+makeLenses ''MandrillStats
41+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''MandrillStats
42+
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
51+ } deriving Show
52+
53+makeLenses ''UserStats
54+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UserStats
55+
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
65+ } deriving Show
66+
67+makeLenses ''UsersInfoResponse
68+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersInfoResponse
69+
70+
71+--------------------------------------------------------------------------------
72+newtype UsersPingResponse = UsersPingResponse T.Text deriving Show
73+
74+deriveFromJSON defaultOptions ''UsersPingResponse
75+
76+instance ToJSON UsersPingResponse where
77+ toJSON (UsersPingResponse t) = String t
78+
79+
80+--------------------------------------------------------------------------------
81+data UsersPing2Response = UsersPing2Response {
82+ _usrr_PING :: T.Text
83+ } deriving Show
84+
85+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersPing2Response
86+
87+
88+
89+--------------------------------------------------------------------------------
90+data UsersSendersResponse = UsersResponse {
2791 _usrr_address :: !T.Text
2892 -- ^ The sender's email address
2993 , _usrr_created_at :: MandrillDate
@@ -54,5 +118,5 @@ data UsersResponse = UsersResponse {
54118 -- ^ The number of unique clicks for emails sent for this sender
55119 } deriving Show
56120
57−makeLenses ''UsersResponse
58−deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersResponse
121+makeLenses ''UsersSendersResponse
122+deriveJSON defaultOptions { fieldLabelModifier = drop 6 } ''UsersSendersResponse