|
| 1 | +""" |
| 2 | +GitLab API: |
| 3 | +https://docs.gitlab.com/ee/api/users.html |
| 4 | +https://docs.gitlab.com/ee/api/projects.html#list-projects-starred-by-a-user |
| 5 | +""" |
1 | 6 | from typing import Any, cast, Dict, List, Union |
2 | 7 |
|
3 | 8 | import requests |
|
38 | 43 | "UserManager", |
39 | 44 | "ProjectUser", |
40 | 45 | "ProjectUserManager", |
| 46 | + "StarredProject", |
| 47 | + "StarredProjectManager", |
41 | 48 | "UserEmail", |
42 | 49 | "UserEmailManager", |
43 | 50 | "UserActivities", |
@@ -129,6 +136,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject): |
129 | 136 | memberships: "UserMembershipManager" |
130 | 137 | personal_access_tokens: UserPersonalAccessTokenManager |
131 | 138 | projects: "UserProjectManager" |
| 139 | + starred_projects: "StarredProjectManager" |
132 | 140 | status: "UserStatusManager" |
133 | 141 |
|
134 | 142 | @cli.register_custom_action("User") |
@@ -502,6 +510,32 @@ def list(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: |
502 | 510 | return ListMixin.list(self, path=path, **kwargs) |
503 | 511 |
|
504 | 512 |
|
| 513 | +class StarredProject(RESTObject): |
| 514 | + pass |
| 515 | + |
| 516 | + |
| 517 | +class StarredProjectManager(ListMixin, RESTManager): |
| 518 | + _path = "/users/%(user_id)s/starred_projects" |
| 519 | + _obj_cls = StarredProject |
| 520 | + _from_parent_attrs = {"user_id": "id"} |
| 521 | + _list_filters = ( |
| 522 | + "archived", |
| 523 | + "membership", |
| 524 | + "min_access_level", |
| 525 | + "order_by", |
| 526 | + "owned", |
| 527 | + "search", |
| 528 | + "simple", |
| 529 | + "sort", |
| 530 | + "starred", |
| 531 | + "statistics", |
| 532 | + "visibility", |
| 533 | + "with_custom_attributes", |
| 534 | + "with_issues_enabled", |
| 535 | + "with_merge_requests_enabled", |
| 536 | + ) |
| 537 | + |
| 538 | + |
505 | 539 | class UserFollowersManager(ListMixin, RESTManager): |
506 | 540 | _path = "/users/%(user_id)s/followers" |
507 | 541 | _obj_cls = User |
|
0 commit comments