aboutsummaryrefslogtreecommitdiff
path: root/applications/gitlab/repositories.py
diff options
context:
space:
mode:
Diffstat (limited to 'applications/gitlab/repositories.py')
-rw-r--r--applications/gitlab/repositories.py43
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)