-- | The repo collaborators API as described on
-- .
module Github.Repos.Collaborators (
collaboratorsOn,
collaboratorsOn',
collaboratorsOnR,
isCollaboratorOn,
isCollaboratorOnR,
module Github.Data,
) where
import Data.Vector (Vector)
import Github.Auth
import Github.Data
import Github.Request
import Network.HTTP.Types (Status)
-- | All the users who have collaborated on a repo.
--
-- > collaboratorsOn "thoughtbot" "paperclip"
collaboratorsOn :: Name GithubOwner -> Name Repo -> IO (Either Error (Vector GithubOwner))
collaboratorsOn = collaboratorsOn' Nothing
-- | All the users who have collaborated on a repo.
-- With authentication.
collaboratorsOn' :: Maybe GithubAuth -> Name GithubOwner -> Name Repo -> IO (Either Error (Vector GithubOwner))
collaboratorsOn' auth user repo =
executeRequestMaybe auth $ collaboratorsOnR user repo Nothing
-- | List collaborators.
-- See
collaboratorsOnR :: Name GithubOwner -> Name Repo -> Maybe Count -> GithubRequest k (Vector GithubOwner)
collaboratorsOnR user repo =
GithubPagedGet ["repos", toPathPart user, toPathPart repo, "collaborators"] []
-- | Whether the user is collaborating on a repo. Takes the user in question,
-- the user who owns the repo, and the repo name.
--
-- > isCollaboratorOn Nothing "mike-burns" "thoughtbot" "paperclip"
-- > isCollaboratorOn Nothing "johnson" "thoughtbot" "paperclip"
--
-- TODO: GithubStatus
isCollaboratorOn :: Maybe GithubAuth
-> Name GithubOwner -- ^ Repository owner
-> Name Repo -- ^ Repository name
-> Name GithubOwner -- ^ Collaborator?
-> IO (Either Error Status)
isCollaboratorOn auth user repo coll =
executeRequestMaybe auth $ isCollaboratorOnR user repo coll
-- | Check if a user is a collaborator.
-- See
isCollaboratorOnR :: Name GithubOwner -- ^ Repository owner
-> Name Repo -- ^ Repository name
-> Name GithubOwner -- ^ Collaborator?
-> GithubRequest k Status
isCollaboratorOnR user repo coll = GithubStatus $
GithubGet ["repos", toPathPart user, toPathPart repo, "collaborators", toPathPart coll] []