-- |

-- see : <http://developer.chatwork.com/ja/endpoint_incoming_requests.html>



{-# LANGUAGE OverloadedStrings #-}



module ChatWork.Endpoints.IncomingRequests

    ( getIncomingRequests

    , acceptIncomingRequest

    , rejectIncomingRequest

    ) where



import           ChatWork.Client  (Client (..))

import           ChatWork.Types   (AcceptedIncomingRequest, ChatWorkResponse,

                                   IncomingRequests, jsonResponse')

import           Network.HTTP.Req (DELETE (..), GET (..), MonadHttp,

                                   NoReqBody (..), PUT (..), req, (/:), (/~))



getIncomingRequests :: (MonadHttp m, Client c) => c -> m (ChatWorkResponse IncomingRequests)

getIncomingRequests c = req GET (baseUrl c /: "incoming_requests") NoReqBody jsonResponse' $ mkHeader c



-- |

-- argument 'Int' is `request_id`

acceptIncomingRequest :: (MonadHttp m, Client c) => c -> Int -> m (ChatWorkResponse AcceptedIncomingRequest)

acceptIncomingRequest c n = req PUT (baseUrl c /: "incoming_requests" /~ n ) NoReqBody jsonResponse' $ mkHeader c



-- |

-- argument 'Int' is `request_id`

rejectIncomingRequest :: (MonadHttp m, Client c) => c -> Int -> m (ChatWorkResponse ())

rejectIncomingRequest c n = req DELETE (baseUrl c /: "incoming_requests" /~ n) NoReqBody jsonResponse' $ mkHeader c