packages feed

calamity-0.8.0.0: Calamity/HTTP/Invite.hs

{-# OPTIONS_GHC -Wno-partial-type-signatures #-}

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

import Calamity.HTTP.Internal.Request
import Calamity.HTTP.Internal.Route
import Calamity.Types.Model.Guild
import Data.Function ((&))
import Data.Text (Text)
import Network.HTTP.Req

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

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

instance Request (InviteRequest a) where
  type Result (InviteRequest a) = a

  route (GetInvite c) =
    baseRoute // PS @"invite"
      & giveParam @"invite" c
      & buildRoute
  route (DeleteInvite c) =
    baseRoute // PS @"invite"
      & giveParam @"invite" c
      & buildRoute

  action (GetInvite _) = getWithP ("with_counts" =: True)
  action (DeleteInvite _) = deleteWith