module Network.API.Mandrill.Users where

import           Network.API.Mandrill.Settings
import           Network.API.Mandrill.HTTP
import           Network.API.Mandrill.Types
import           Network.API.Mandrill.Users.Types
import           Network.HTTP.Client


--------------------------------------------------------------------------------
-- | Return the information about the API-connected user
info :: MandrillKey -> Maybe Manager -> IO (MandrillResponse UsersInfoResponse)
info :: MandrillKey
-> Maybe Manager -> IO (MandrillResponse UsersInfoResponse)
info MandrillKey
key = MandrillCalls
-> UsersRq
-> Maybe Manager
-> IO (MandrillResponse UsersInfoResponse)
forall ep a rq.
(MandrillEndpoint ep, FromJSON a, ToJSON rq) =>
ep -> rq -> Maybe Manager -> IO (MandrillResponse a)
toMandrillResponse MandrillCalls
UsersInfo (MandrillKey -> UsersRq
UsersRq MandrillKey
key)


--------------------------------------------------------------------------------
-- | Validate an API key and respond to a ping
ping :: MandrillKey -> Maybe Manager -> IO (MandrillResponse UsersPingResponse)
ping :: MandrillKey
-> Maybe Manager -> IO (MandrillResponse UsersPingResponse)
ping MandrillKey
_ Maybe Manager
_ = String -> IO (MandrillResponse UsersPingResponse)
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"users/ping.json doesn't return valid JSON, thus is not implemented yet."


--------------------------------------------------------------------------------
-- | Validate an API key and respond to a ping (anal JSON parser version)
ping2 :: MandrillKey -> Maybe Manager -> IO (MandrillResponse UsersPing2Response)
ping2 :: MandrillKey
-> Maybe Manager -> IO (MandrillResponse UsersPing2Response)
ping2 MandrillKey
key = MandrillCalls
-> UsersRq
-> Maybe Manager
-> IO (MandrillResponse UsersPing2Response)
forall ep a rq.
(MandrillEndpoint ep, FromJSON a, ToJSON rq) =>
ep -> rq -> Maybe Manager -> IO (MandrillResponse a)
toMandrillResponse MandrillCalls
UsersPing2 (MandrillKey -> UsersRq
UsersRq MandrillKey
key)


--------------------------------------------------------------------------------
-- | Return the senders that have tried to use this account, both verified and unverified
senders :: MandrillKey -> Maybe Manager -> IO (MandrillResponse [UsersSendersResponse])
senders :: MandrillKey
-> Maybe Manager -> IO (MandrillResponse [UsersSendersResponse])
senders MandrillKey
key = MandrillCalls
-> UsersRq
-> Maybe Manager
-> IO (MandrillResponse [UsersSendersResponse])
forall ep a rq.
(MandrillEndpoint ep, FromJSON a, ToJSON rq) =>
ep -> rq -> Maybe Manager -> IO (MandrillResponse a)
toMandrillResponse MandrillCalls
UsersSenders (MandrillKey -> UsersRq
UsersRq MandrillKey
key)