packages feed

calamity-0.1.4.3: src/Calamity/HTTP/Invite.hs

-- | Invite endpoints
module Calamity.HTTP.Invite
    ( InviteRequest(..) ) where

import           Calamity.HTTP.Internal.Request
import           Calamity.HTTP.Internal.Route
import           Calamity.Types.Model.Guild

import           Control.Lens                   hiding ( (.=) )

import           Data.Text                      ( Text )

import           Network.Wreq

import           TextShow

data InviteRequest a where
  GetInvite    :: Text -> InviteRequest Invite
  DeleteInvite :: Text -> InviteRequest ()

baseRoute :: RouteBuilder _
baseRoute = mkRouteBuilder // S "invites"

instance Request (InviteRequest a) a where
  toRoute (GetInvite c) = baseRoute // S c
    & buildRoute
  toRoute (DeleteInvite c) = baseRoute // S c
    & buildRoute

  toAction (GetInvite _) = getWithP (param "with_counts" .~ [showt True])
  toAction (DeleteInvite _) = deleteWith