|
3 | 3 | class Groups extends AbstractApi
|
4 | 4 | {
|
5 | 5 | /**
|
6 |
| - * @param int $page |
7 |
| - * @param int $per_page |
| 6 | + * @param array $parameters ( |
| 7 | + * |
| 8 | + * @var int[] $skip_groups Skip the group IDs passes. |
| 9 | + * @var bool $all_available Show all the groups you have access to. |
| 10 | + * @var string $search Return list of authorized groups matching the search criteria. |
| 11 | + * @var string $order_by Order groups by name or path. Default is name. |
| 12 | + * @var string $sort Order groups in asc or desc order. Default is asc. |
| 13 | + * @var bool $statistics Include group statistics (admins only). |
| 14 | + * @var bool $owned Limit by groups owned by the current user. |
| 15 | + * ) |
8 | 16 | * @return mixed
|
9 | 17 | */
|
10 |
| - public function all($page = 1, $per_page = self::PER_PAGE) |
| 18 | + public function all(array $parameters = []) |
11 | 19 | {
|
12 |
| - return $this->get('groups', array( |
13 |
| - 'page' => $page, |
14 |
| - 'per_page' => $per_page |
15 |
| - )); |
16 |
| - } |
| 20 | + $resolver = $this->createOptionsResolver(); |
| 21 | + $booleanNormalizer = function ($value) { |
| 22 | + return $value ? 'true' : 'false'; |
| 23 | + }; |
17 | 24 |
|
18 |
| - /** |
19 |
| - * @param string $query |
20 |
| - * @param int $page |
21 |
| - * @param int $per_page |
22 |
| - * @return mixed |
23 |
| - */ |
24 |
| - public function search($query, $page = 1, $per_page = self::PER_PAGE) |
25 |
| - { |
26 |
| - return $this->get('groups?search='.$this->encodePath($query), array( |
27 |
| - 'page' => $page, |
28 |
| - 'per_page' => $per_page |
29 |
| - )); |
| 25 | + $resolver->setDefined('skip_groups') |
| 26 | + ->setAllowedTypes('skip_groups', 'array') |
| 27 | + ->setAllowedValues('skip_groups', function (array $value) { |
| 28 | + return count($value) == count(array_filter($value, 'is_int')); |
| 29 | + }) |
| 30 | + ; |
| 31 | + $resolver->setDefined('all_available') |
| 32 | + ->setAllowedTypes('all_available', 'bool') |
| 33 | + ->setNormalizer('all_available', $booleanNormalizer) |
| 34 | + ; |
| 35 | + $resolver->setDefined('search'); |
| 36 | + $resolver->setDefined('order_by') |
| 37 | + ->setAllowedValues('order_by', ['name', 'path']) |
| 38 | + ; |
| 39 | + $resolver->setDefined('sort') |
| 40 | + ->setAllowedValues('sort', ['asc', 'desc']) |
| 41 | + ; |
| 42 | + $resolver->setDefined('statistics') |
| 43 | + ->setAllowedTypes('statistics', 'bool') |
| 44 | + ->setNormalizer('statistics', $booleanNormalizer) |
| 45 | + ; |
| 46 | + $resolver->setDefined('owned') |
| 47 | + ->setAllowedTypes('owned', 'bool') |
| 48 | + ->setNormalizer('owned', $booleanNormalizer) |
| 49 | + ; |
| 50 | + |
| 51 | + return $this->get('groups', $resolver->resolve($parameters)); |
30 | 52 | }
|
31 | 53 |
|
32 | 54 | /**
|
@@ -85,17 +107,20 @@ public function transfer($group_id, $project_id)
|
85 | 107 | }
|
86 | 108 |
|
87 | 109 | /**
|
88 |
| - * @param int $id |
89 |
| - * @param int $page |
90 |
| - * @param int $per_page |
| 110 | + * @param int $id |
| 111 | + * @param array $parameters ( |
| 112 | + * |
| 113 | + * @var string $query A query string to search for members. |
| 114 | + * ) |
| 115 | + * |
91 | 116 | * @return mixed
|
92 | 117 | */
|
93 |
| - public function members($id, $page = 1, $per_page = self::PER_PAGE) |
| 118 | + public function members($id, array $parameters = []) |
94 | 119 | {
|
95 |
| - return $this->get('groups/'.$this->encodePath($id).'/members', array( |
96 |
| - 'page' => $page, |
97 |
| - 'per_page' => $per_page |
98 |
| - )); |
| 120 | + $resolver = $this->createOptionsResolver(); |
| 121 | + $resolver->setDefined('query'); |
| 122 | + |
| 123 | + return $this->get('groups/'.$this->encodePath($id).'/members', $resolver->resolve($parameters)); |
99 | 124 | }
|
100 | 125 |
|
101 | 126 | /**
|
@@ -137,15 +162,55 @@ public function removeMember($group_id, $user_id)
|
137 | 162 |
|
138 | 163 | /**
|
139 | 164 | * @param $id
|
140 |
| - * @param int $page |
141 |
| - * @param int $per_page |
| 165 | + * @param array $parameters ( |
| 166 | + * |
| 167 | + * @var bool $archived Limit by archived status. |
| 168 | + * @var string $visibility Limit by visibility public, internal, or private. |
| 169 | + * @var string $order_by Return projects ordered by id, name, path, created_at, updated_at, or last_activity_at fields. |
| 170 | + * Default is created_at. |
| 171 | + * @var string $sort Return projects sorted in asc or desc order. Default is desc. |
| 172 | + * @var string $search Return list of authorized projects matching the search criteria. |
| 173 | + * @var bool $simple Return only the ID, URL, name, and path of each project. |
| 174 | + * @var bool $owned Limit by projects owned by the current user. |
| 175 | + * @var bool $starred Limit by projects starred by the current user. |
| 176 | + * ) |
| 177 | + * |
142 | 178 | * @return mixed
|
143 | 179 | */
|
144 |
| - public function projects($id, $page = 1, $per_page = self::PER_PAGE) |
| 180 | + public function projects($id, array $parameters = []) |
145 | 181 | {
|
146 |
| - return $this->get('groups/'.$this->encodePath($id).'/projects', array( |
147 |
| - 'page' => $page, |
148 |
| - 'per_page' => $per_page |
149 |
| - )); |
| 182 | + $resolver = $this->createOptionsResolver(); |
| 183 | + $booleanNormalizer = function ($value) { |
| 184 | + return $value ? 'true' : 'false'; |
| 185 | + }; |
| 186 | + |
| 187 | + $resolver->setDefined('archived') |
| 188 | + ->setAllowedTypes('archived', 'bool') |
| 189 | + ->setNormalizer('archived', $booleanNormalizer) |
| 190 | + ; |
| 191 | + $resolver->setDefined('visibility') |
| 192 | + ->setAllowedValues('visibility', ['public', 'internal', 'private']) |
| 193 | + ; |
| 194 | + $resolver->setDefined('order_by') |
| 195 | + ->setAllowedValues('order_by', ['id', 'name', 'path', 'created_at', 'updated_at', 'last_activity_at']) |
| 196 | + ; |
| 197 | + $resolver->setDefined('sort') |
| 198 | + ->setAllowedValues('sort', ['asc', 'desc']) |
| 199 | + ; |
| 200 | + $resolver->setDefined('search'); |
| 201 | + $resolver->setDefined('simple') |
| 202 | + ->setAllowedTypes('simple', 'bool') |
| 203 | + ->setNormalizer('simple', $booleanNormalizer) |
| 204 | + ; |
| 205 | + $resolver->setDefined('owned') |
| 206 | + ->setAllowedTypes('owned', 'bool') |
| 207 | + ->setNormalizer('owned', $booleanNormalizer) |
| 208 | + ; |
| 209 | + $resolver->setDefined('starred') |
| 210 | + ->setAllowedTypes('starred', 'bool') |
| 211 | + ->setNormalizer('starred', $booleanNormalizer) |
| 212 | + ; |
| 213 | + |
| 214 | + return $this->get('groups/'.$this->encodePath($id).'/projects', $resolver->resolve($parameters)); |
150 | 215 | }
|
151 | 216 | }
|
0 commit comments