diff --git a/.gitignore b/.gitignore index d854506538..3ae2f4357f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ +build/ +covHtml/ vendor/ token.php diff --git a/examples/user-repositories-languages-async.php b/examples/user-repositories-languages-async.php new file mode 100644 index 0000000000..d56657bfe6 --- /dev/null +++ b/examples/user-repositories-languages-async.php @@ -0,0 +1,28 @@ +user($argv[1] ?? 'php-api-clients')->then(function (User $user) use ($argv) { + resource_pretty_print($user); + + return $user->repository($argv[2] ?? 'github'); +})->then(function (Repository $repository) { + resource_pretty_print($repository, 1, true); + + return $repository->languages(); +})->done(function ($languages) { + var_export($languages); +}, 'display_throwable'); + +$loop->run(); + +displayState($client->getRateLimitState()); diff --git a/src/CommandBus/Command/Repository/LanguagesCommand.php b/src/CommandBus/Command/Repository/LanguagesCommand.php new file mode 100644 index 0000000000..d49b848730 --- /dev/null +++ b/src/CommandBus/Command/Repository/LanguagesCommand.php @@ -0,0 +1,32 @@ +fullName = $fullName; + } + + /** + * @return string + */ + public function getFullName(): string + { + return $this->fullName; + } +} diff --git a/src/CommandBus/Handler/Repository/LanguagesHandler.php b/src/CommandBus/Handler/Repository/LanguagesHandler.php new file mode 100644 index 0000000000..db1f84019a --- /dev/null +++ b/src/CommandBus/Handler/Repository/LanguagesHandler.php @@ -0,0 +1,39 @@ +requestService = $requestService; + } + + /** + * @param LanguagesCommand $command + * @return PromiseInterface + */ + public function handle(LanguagesCommand $command): PromiseInterface + { + return $this->requestService->request( + new Request('GET', 'repos/' . $command->getFullName() . '/languages') + )->then(function ($response) { + return resolve($response->getBody()->getJson()); + }); + } +} diff --git a/src/Resource/Async/Repository.php b/src/Resource/Async/Repository.php index af1a229b57..9b528835c7 100644 --- a/src/Resource/Async/Repository.php +++ b/src/Resource/Async/Repository.php @@ -9,6 +9,7 @@ use ApiClients\Client\Github\CommandBus\Command\Repository\CommunityHealthCommand; use ApiClients\Client\Github\CommandBus\Command\Repository\ContentsCommand; use ApiClients\Client\Github\CommandBus\Command\Repository\LabelsCommand; +use ApiClients\Client\Github\CommandBus\Command\Repository\LanguagesCommand; use ApiClients\Client\Github\CommandBus\Command\Repository\ReleasesCommand; use ApiClients\Client\Github\CommandBus\Command\Repository\TagsCommand; use ApiClients\Client\Github\Resource\Repository as BaseRepository; @@ -83,4 +84,11 @@ public function releases(): ObservableInterface new ReleasesCommand($this->fullName()) )); } + + public function languages(): PromiseInterface + { + return $this->handleCommand( + new LanguagesCommand($this->fullName()) + ); + } } diff --git a/tests/Resource/Async/Repository/Release/AssetTest.php b/tests/Resource/Async/Repository/Release/AssetTest.php new file mode 100644 index 0000000000..82f23a410a --- /dev/null +++ b/tests/Resource/Async/Repository/Release/AssetTest.php @@ -0,0 +1,25 @@ +