{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE OverloadedStrings #-}
module GitHub.Paths.Orgs.Teams.Members where

import           Data.Aeson             (encode)
import           Data.Text              (Text)
import           Data.Vector            (Vector)
import           GitHub.Data.Request    (CommandMethod (Delete, Put),
                                         FetchCount (FetchAll),
                                         GenRequest (Command), MediaType (..),
                                         RW (..), Request, command, pagedQuery,
                                         query)
import           GitHub.Types.Base.User (User)
import           GitHub.Types.Settings  (TeamMembership)

getMembersR :: Text -> Text -> Request 'RO (Vector User)
getMembersR :: Text -> Text -> Request 'RO (Vector User)
getMembersR Text
org Text
team =
    Paths -> QueryString -> FetchCount -> Request 'RO (Vector User)
forall a (mt :: RW).
FromJSON a =>
Paths -> QueryString -> FetchCount -> Request mt (Vector a)
pagedQuery [Text
"orgs", Text
org, Text
"teams", Text
team, Text
"members"] [] FetchCount
FetchAll

addMemberR :: Text -> Text -> Text -> TeamMembership -> Request 'RW TeamMembership
addMemberR :: Text
-> Text -> Text -> TeamMembership -> Request 'RW TeamMembership
addMemberR Text
org Text
team Text
member =
    CommandMethod -> Paths -> ByteString -> Request 'RW TeamMembership
forall a. CommandMethod -> Paths -> ByteString -> Request 'RW a
command CommandMethod
Put [Text
"orgs", Text
org, Text
"teams", Text
team, Text
"memberships", Text
member] (ByteString -> Request 'RW TeamMembership)
-> (TeamMembership -> ByteString)
-> TeamMembership
-> Request 'RW TeamMembership
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TeamMembership -> ByteString
forall a. ToJSON a => a -> ByteString
encode

getMembershipR :: Text -> Text -> Text -> Request 'RO TeamMembership
getMembershipR :: Text -> Text -> Text -> Request 'RO TeamMembership
getMembershipR Text
org Text
team Text
member =
    Paths -> QueryString -> Request 'RO TeamMembership
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query [Text
"orgs", Text
org, Text
"teams", Text
team, Text
"memberships", Text
member] []

deleteMemberR :: Text -> Text -> Text -> GenRequest 'MtUnit 'RW ()
deleteMemberR :: Text -> Text -> Text -> GenRequest 'MtUnit 'RW ()
deleteMemberR Text
org Text
team Text
member =
    CommandMethod -> Paths -> ByteString -> GenRequest 'MtUnit 'RW ()
forall (mt :: MediaType *) a.
CommandMethod -> Paths -> ByteString -> GenRequest mt 'RW a
Command CommandMethod
Delete [Text
"orgs", Text
org, Text
"teams", Text
team, Text
"members", Text
member] ByteString
forall a. Monoid a => a
mempty