-- |

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



{-# LANGUAGE OverloadedStrings #-}



module ChatWork.Endpoints.My

    ( getMyStatus

    , getMyTasks

    ) where



import           ChatWork.Client  (Client (..))

import           ChatWork.Types   (ChatWorkResponse, GetMyTasksParams (..),

                                   MyStatus, MyTasks, ToReqParam (..),

                                   jsonResponse')

import           Data.Monoid      ((<>))

import           Network.HTTP.Req (GET (..), MonadHttp, NoReqBody (..), req,

                                   (/:))



getMyStatus :: (MonadHttp m, Client c) => c -> m (ChatWorkResponse MyStatus)

getMyStatus c = req GET (baseUrl c /: "my" /: "status") NoReqBody jsonResponse' $ mkHeader c



getMyTasks :: (MonadHttp m, Client c) => c -> GetMyTasksParams -> m (ChatWorkResponse MyTasks)

getMyTasks c params = req GET (baseUrl c /: "my" /: "tasks") NoReqBody jsonResponse' $ mkHeader c <> params'

  where

    params' = toReqParam "assigned_by_account_id" (getMyTasksAssignedByAccountId params)

           <> toReqParam "status" (getMyTasksStatus params)