summaryrefslogtreecommitdiff
path: root/gitlab/objects.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/objects.py')
-rw-r--r--gitlab/objects.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 94bf1d9..139a92e 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -1651,6 +1651,34 @@ class Project(GitlabObject):
r = self.gitlab._raw_delete(url)
raise_error_from_response(r, GitlabDeleteError)
+ def star(self):
+ """Star a project.
+
+ Returns:
+ Project: the updated Project
+
+ Raises:
+ GitlabConnectionError: If the server cannot be reached.
+ """
+ url = "/projects/%s/star" % self.id
+ r = self.gitlab._raw_post(url)
+ raise_error_from_response(r, GitlabGetError, [201, 304])
+ return Project(self.gitlab, r.json()) if r.status_code == 201 else self
+
+ def unstar(self):
+ """Unstar a project.
+
+ Returns:
+ Project: the updated Project
+
+ Raises:
+ GitlabConnectionError: If the server cannot be reached.
+ """
+ url = "/projects/%s/star" % self.id
+ r = self.gitlab._raw_delete(url)
+ raise_error_from_response(r, GitlabDeleteError, [200, 304])
+ return Project(self.gitlab, r.json()) if r.status_code == 200 else self
+
class TeamMember(GitlabObject):
_url = '/user_teams/%(team_id)s/members'
@@ -1727,6 +1755,18 @@ class ProjectManager(BaseManager):
"""
return self.gitlab._raw_list("/projects/owned", Project, **kwargs)
+ def starred(self, **kwargs):
+ """List starred projects.
+
+ Args:
+ all (bool): If True, return all the items, without pagination
+ **kwargs: Additional arguments to send to GitLab.
+
+ Returns:
+ list(gitlab.Gitlab.Project): The list of starred projects.
+ """
+ return self.gitlab._raw_list("/projects/starred", Project, **kwargs)
+
class UserProjectManager(BaseManager):
obj_cls = UserProject