Example #1
0
    def list_repo_team_permissions(self, org, repo):
        api_part = 'repos/{}/{}/teams'.format(org, repo)

        headers = {'Authorization': 'token {}'.format(self.github_creds[org])}

        params = {"page": 1}
        done = False

        teams = {}
        url = "{}{}".format(GITHUB_URL, api_part)

        while not done:
            result = requests.get(url, headers=headers, params=params)

            if result.status_code != 200:
                raise InvalidResponseCodeFromGitHubRepoError(
                    org, repo, result.status_code)

            if not result.links.get("last"):
                done = True
            else:
                params["page"] += 1

            result_json = result.json()
            for r in result_json:
                teams[r["name"]] = r["permission"]

        return teams
Example #2
0
    def list_repo_outside_collaborators(self, org, repo):
        api_part = 'repos/{}/{}/collaborators'.format(org, repo)

        headers = {'Authorization': 'token {}'.format(self.github_creds[org])}

        params = {"page": 1, "affiliation": "outside"}
        done = False

        collabs = []
        url = "{}{}".format(GITHUB_URL, api_part)

        while not done:
            result = requests.get(url, headers=headers, params=params)

            if result.status_code != 200:
                raise InvalidResponseCodeFromGitHubRepoError(
                    org, repo, result.status_code)

            if not result.links.get("last"):
                done = True
            else:
                params["page"] += 1

            result_json = result.json()
            collabs += result_json

        return collabs
Example #3
0
    def list_repo_releases(self, org, repo):
        api_part = 'repos/{}/{}/releases'.format(org, repo)

        headers = {'Authorization': 'token {}'.format(self.github_creds[org])}

        params = {"page": 1}
        done = False

        releases = []
        url = "{}{}".format(GITHUB_URL, api_part)

        while not done:
            result = requests.get(url, headers=headers, params=params)

            if result.status_code != 200:
                raise InvalidResponseCodeFromGitHubRepoError(
                    org, repo, result.status_code)

            if not result.links.get("last"):
                done = True
            else:
                params["page"] += 1

            result_json = result.json()
            for r in result_json:
                # We only care about a few fields:
                release = {
                    "author": r["author"]["login"],
                    "created_at": r["created_at"],
                    "draft": r["draft"],
                    "id": r["id"],
                    "name": r["name"],
                    "prerelease": r["prerelease"],
                    "tag_name": r["tag_name"],
                    "target_commitish": r["target_commitish"],
                    "url": r["url"]
                }

                releases.append(release)

        return releases
Example #4
0
    def list_repo_protected_branches(self, org, repo):
        api_part = 'repos/{}/{}/branches'.format(org, repo)

        headers = {
            'Authorization': 'token {}'.format(self.github_creds[org]),
            'Accept': 'application/vnd.github.loki-preview+json'
        }

        params = {
            "page": 1,
            "protected":
            "true"  # GitHub strangeness... Needs to be a string :/
        }
        done = False

        branches = []
        url = "{}{}".format(GITHUB_URL, api_part)

        while not done:
            result = requests.get(url, headers=headers, params=params)

            if result.status_code != 200:
                raise InvalidResponseCodeFromGitHubRepoError(
                    org, repo, result.status_code)

            if not result.links.get("last"):
                done = True
            else:
                params["page"] += 1

            result_json = result.json()
            for b in result_json:

                # I don't care so much about the commit itself.
                del b["commit"]
                branches.append(b)

        return branches