module Network.Octohat.Members
( membersForOrganization
, membersForTeam
, teamsForOrganization
, addMemberToTeam
, deleteMemberFromTeam
, deleteTeamFromOrganization
, publicKeysForUser
, addTeamToOrganization
, userForUsername
, addPublicKey
) where
import Network.Octohat.Internal
import Network.Octohat.Types
import qualified Data.Text as T
import Data.Monoid ((<>))
addTeamToOrganization :: T.Text
-> T.Text
-> T.Text
-> GitHub Team
addTeamToOrganization nameOfNewTeam descOfTeam orgName =
postRequestTo (composeEndpoint ["orgs", orgName, "teams"]) (TeamCreateRequest nameOfNewTeam descOfTeam)
deleteTeamFromOrganization :: Integer
-> GitHub DidDelete
deleteTeamFromOrganization idOfTeam = deleteRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam])
membersForOrganization :: T.Text
-> GitHub [Member]
membersForOrganization nameOfOrg = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "members"])
membersForTeam :: Integer
-> GitHub [Member]
membersForTeam idOfTeam = getRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam, "members"])
teamsForOrganization :: T.Text
-> GitHub [Team]
teamsForOrganization nameOfOrg = getRequestTo (composeEndpoint ["orgs", nameOfOrg, "teams"])
addMemberToTeam :: T.Text
-> Integer
-> GitHub StatusInTeam
addMemberToTeam nameOfUser idOfTeam =
putRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam, "memberships", nameOfUser])
deleteMemberFromTeam :: T.Text
-> Integer
-> GitHub DidDelete
deleteMemberFromTeam nameOfUser idOfTeam =
deleteRequestTo (composeEndpoint ["teams", T.pack $ show idOfTeam, "memberships", nameOfUser])
publicKeysForUser :: T.Text
-> GitHub [PublicKey]
publicKeysForUser nameOfUser = getRequestTo (composeEndpoint ["users", nameOfUser, "keys"])
userForUsername :: T.Text
-> GitHub Member
userForUsername username = getRequestTo (composeEndpoint ["users", username])
addPublicKey :: T.Text
-> T.Text
-> GitHub PublicKey
addPublicKey newKey newTitle =
postRequestTo (composeEndpoint ["user", "keys"]) (AddPublicKeyRequest ("ssh-rsa " <> newKey) newTitle)