@@ -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