From ba39e610942e2933aa614981a190443e7625e45e Mon Sep 17 00:00:00 2001 From: Benjamin Blake Date: Sun, 1 Mar 2020 17:06:32 -0700 Subject: [PATCH] PushEvents - Fixed two errors + Fixed "array_map() expects parameter 1 to be a valid callback" error + Fixed "Argument 1 passed to Gitea\PushEvent::setCommits() must be of the type array, null given" --- src/PushEvent.php | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/PushEvent.php b/src/PushEvent.php index 92694be..cbd80c8 100644 --- a/src/PushEvent.php +++ b/src/PushEvent.php @@ -2,7 +2,9 @@ namespace Gitea; -use Gitea\Models\{PayloadCommit, Repository, User}; +use Gitea\Model\PayloadCommit; +use Gitea\Model\Repository; +use Gitea\Model\User; use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Psr7\Uri; use Psr\Http\Message\UriInterface; @@ -101,19 +103,28 @@ class PushEvent extends AbstractApiModel { * @return static The instance corresponding to the specified JSON map. */ static function fromJson(object &$client, ?object $caller, object $map): self { - return (new static( + $newEvent = new static( $client, $caller - )) - ->setAfter(isset($map->after) && is_string($map->after) ? $map->after : '') - ->setBefore(isset($map->before) && is_string($map->before) ? $map->before : '') - ->setCompareUrl(isset($map->compare_url) && is_string($map->compare_url) ? new Uri($map->compare_url) : null) - ->setCommits(isset($map->commits) && is_array($map->commits) ? array_map([PayloadCommit::class, 'fromJson'], $map->commits) : []) - ->setPusher(isset($map->pusher) && is_object($map->pusher) ? User::fromJson($client, $caller, $map->pusher) : null) - ->setRef(isset($map->ref) && is_string($map->ref) ? $map->ref : '') - ->setRepository(isset($map->repository) && is_object($map->repository) ? Repository::fromJson($client, $caller, $map->repository) : null) - ->setSecret(isset($map->secret) && is_string($map->secret) ? $map->secret : '') - ->setSender(isset($map->sender) && is_object($map->sender) ? User::fromJson($client, $caller, $map->sender) : null); + ); + $newEvent->setAfter(isset($map->after) && is_string($map->after) ? $map->after : '') + ->setBefore(isset($map->before) && is_string($map->before) ? $map->before : '') + ->setCompareUrl(isset($map->compare_url) && is_string($map->compare_url) ? new Uri($map->compare_url) : null) + ->setPusher(isset($map->pusher) && is_object($map->pusher) ? User::fromJson($client, null, $map->pusher) : null) + ->setRef(isset($map->ref) && is_string($map->ref) ? $map->ref : '') + ->setRepository(isset($map->repository) && is_object($map->repository) ? Repository::fromJson($client, null, $map->repository) : null) + ->setSecret(isset($map->secret) && is_string($map->secret) ? $map->secret : '') + ->setSender(isset($map->sender) && is_object($map->sender) ? User::fromJson($client, null, $map->sender) : null); + + if(isset($map->commits) && is_array($map->commits)) { + $commitsArray = []; + foreach ($commits as $commit) { + $commitsArray[] = PayloadCommit::fromJson($client, null, $commit); + } + $newEvent->setCommits($commitsArray); + } + + return $newEvent; } /**