diff options
author | Christian Cleberg <hello@cleberg.net> | 2025-05-06 20:00:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-06 20:00:13 -0500 |
commit | 428fd934b7f4637f9436cbf75fe4780eee74c480 (patch) | |
tree | cf190e1fa0406171b035e00dc11f8f97d6965b29 /applications/gitlab/repositories.py | |
parent | b7e1fad59310d60fe3fb3f5053cd3c3e80ad2d2f (diff) | |
parent | b7b1adecfd26b19758b9474c3e78f52a6418d0e1 (diff) | |
download | audit-tools-428fd934b7f4637f9436cbf75fe4780eee74c480.tar.gz audit-tools-428fd934b7f4637f9436cbf75fe4780eee74c480.tar.bz2 audit-tools-428fd934b7f4637f9436cbf75fe4780eee74c480.zip |
Merge pull request #3 from ccleberg/gitlab
add gitlab repositories.py script
Diffstat (limited to 'applications/gitlab/repositories.py')
-rw-r--r-- | applications/gitlab/repositories.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/applications/gitlab/repositories.py b/applications/gitlab/repositories.py new file mode 100644 index 0000000..a955a49 --- /dev/null +++ b/applications/gitlab/repositories.py @@ -0,0 +1,43 @@ +""" +List all repositories (projects) for a user or organization in GitLab. +""" + +import requests + +BASE_URL = "https://gitlab.com/api/v4" +PRIVATE_TOKEN = "your_access_token" +USER_ID = "your_user_or_group_id" +TIMEOUT = 30 + +URL = f"{BASE_URL}/groups/{USER_ID}/projects" # Group URL +# URL = f"{BASE_URL}/users/{USER_ID}/projects" # User URL +HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN} + + +def list_projects(user_or_group_id): + PER_PAGE = 100 + page = 1 + projects = [] + + while True: + response = requests.get(URL, headers=HEADERS, timeout=TIMEOUT, params={"page": page, "per_page": PER_PAGE}) + + if response.status_code == 200: + current_projects = response.json() + if not current_projects: + break + projects.extend(current_projects) + page += 1 + else: + print(f"Failed to retrieve projects: {response.status_code} - {response.text}") + break + + if projects: + print(f"Projects under ID: {user_or_group_id}:") + for project in projects: + print(f"- {project['name']} (ID: {project['id']})") + else: + print(f"No projects found for ID: {user_or_group_id}.") + +if __name__ == "__main__": + list_projects(USER_ID) |