Skip to content

Commit ee2b0e6

Browse files
committed
Use OptionsResolver in Groups::projects
1 parent 049dba3 commit ee2b0e6

File tree

2 files changed

+48
-7
lines changed

2 files changed

+48
-7
lines changed

UPGRADE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ See [documentation](doc/customize.md) to know how to customize the client timeou
2424
* The `all` method now take a single argument which is an associative array of query string parameters.
2525
* The `search` method have been removed. Use `all` method instead.
2626
* The `members` method second and subsequent arguments have been replaced by a single associative array of query string parameters.
27+
* The `projects` method second and subsequent arguments have been replaced by a single associative array of query string parameters.
2728

2829
## `Gitlab\Api\Issues` changes
2930

lib/Gitlab/Api/Groups.php

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,15 +162,55 @@ public function removeMember($group_id, $user_id)
162162

163163
/**
164164
* @param $id
165-
* @param int $page
166-
* @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+
*
167178
* @return mixed
168179
*/
169-
public function projects($id, $page = 1, $per_page = self::PER_PAGE)
180+
public function projects($id, array $parameters = [])
170181
{
171-
return $this->get('groups/'.$this->encodePath($id).'/projects', array(
172-
'page' => $page,
173-
'per_page' => $per_page
174-
));
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));
175215
}
176216
}

0 commit comments

Comments
 (0)