packages feed

calamity-0.1.26.0: 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.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 // S c
      & buildRoute
  route (DeleteInvite c) =
    baseRoute // S c
      & buildRoute

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