Skip to content

Commit a7d94b6

Browse files
committed
Use OptionsResolver in Projects::events
1 parent 76f77f6 commit a7d94b6

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

UPGRADE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ Use the `deployKeys`, `deployKey`, `addDeployKey`, `deleteDeployKey`, `removeDep
5757
* The `trace` method have been removed. Use `Gitlab\Api\Jobs::trace` instead.
5858
* The `builds` method have been removed. Use `Gitlab\Api\Jobs::all` instead.
5959
* The `build` method have been removed. Use `Gitlab\Api\Jobs::show` instead.
60+
* The `events` method second and subsequent arguments have been replaced by a single associative array of query string parameters.
6061

6162
## `Gitlab\Api\ProjectNamespaces` changes
6263

lib/Gitlab/Api/Projects.php

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -413,16 +413,42 @@ public function enableDeployKey($project_id, $key_id)
413413

414414
/**
415415
* @param int $project_id
416-
* @param int $page
417-
* @param int $per_page
416+
* @param array $parameters (
417+
*
418+
* @var string $action Include only events of a particular action type.
419+
* @var string $target_type Include only events of a particular target type.
420+
* @var \DateTimeInterface $before Include only events created before a particular date.
421+
* @var \DateTimeInterface $after Include only events created after a particular date.
422+
* @var string $sort Sort events in asc or desc order by created_at. Default is desc.
423+
* )
424+
*
418425
* @return mixed
419426
*/
420-
public function events($project_id, $page = 1, $per_page = self::PER_PAGE)
427+
public function events($project_id, array $parameters = [])
421428
{
422-
return $this->get($this->getProjectPath($project_id, 'events'), array(
423-
'page' => $page,
424-
'per_page' => $per_page
425-
));
429+
$resolver = $this->createOptionsResolver();
430+
$datetimeNormalizer = function (\DateTimeInterface $value) {
431+
return $value->format('Y-m-d');
432+
};
433+
434+
$resolver->setDefined('action')
435+
->setAllowedValues('action', ['created', 'updated', 'closed', 'reopened', 'pushed', 'commented', 'merged', 'joined', 'left', 'destroyed', 'expired'])
436+
;
437+
$resolver->setDefined('target_type')
438+
->setAllowedValues('target_type', ['issue', 'milestone', 'merge_request', 'note', 'project', 'snippet', 'user'])
439+
;
440+
$resolver->setDefined('before')
441+
->setAllowedTypes('before', \DateTimeInterface::class)
442+
->setNormalizer('before', $datetimeNormalizer);
443+
$resolver->setDefined('after')
444+
->setAllowedTypes('after', \DateTimeInterface::class)
445+
->setNormalizer('after', $datetimeNormalizer)
446+
;
447+
$resolver->setDefined('sort')
448+
->setAllowedValues('sort', ['asc', 'desc'])
449+
;
450+
451+
return $this->get($this->getProjectPath($project_id, 'events'), $resolver->resolve($parameters));
426452
}
427453

428454
/**

test/Gitlab/Tests/Api/ProjectsTest.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -636,10 +636,7 @@ public function shouldGetEvents()
636636
$api = $this->getApiMock();
637637
$api->expects($this->once())
638638
->method('get')
639-
->with('projects/1/events', array(
640-
'page' => 1,
641-
'per_page' => AbstractApi::PER_PAGE
642-
))
639+
->with('projects/1/events', array())
643640
->will($this->returnValue($expectedArray))
644641
;
645642

@@ -666,7 +663,7 @@ public function shouldGetEventsWithPagination()
666663
->will($this->returnValue($expectedArray))
667664
;
668665

669-
$this->assertEquals($expectedArray, $api->events(1, 2, 15));
666+
$this->assertEquals($expectedArray, $api->events(1, ['page' => 2, 'per_page' => 15]));
670667
}
671668

672669
/**

0 commit comments

Comments
 (0)