33namespace ApiClients \Client \Github \CommandBus \Handler \Repository \Commit ;
44
55use ApiClients \Client \Github \CommandBus \Command \Repository \Commit \ChecksCommand ;
6- use ApiClients \Client \Github \CommandBus \Command \Repository \Commit \StatusesCommand ;
76use ApiClients \Client \Github \Resource \Repository \Commit \CheckInterface ;
8- use ApiClients \Client \Github \Resource \Repository \Commit \StatusInterface ;
97use ApiClients \Client \Github \Service \IteratePagesService ;
108use ApiClients \Foundation \Hydrator \Hydrator ;
11- use ApiClients \Tools \Services \Client \FetchAndIterateService ;
129use function ApiClients \Tools \Rx \observableFromArray ;
1310use React \Promise \PromiseInterface ;
1411use function React \Promise \resolve ;
12+ use function igorw \get_in ;
1513
1614final class ChecksHandler
1715{
1816 /**
19- * @var FetchAndIterateService
17+ * @var IteratePagesService
2018 */
21- private $ fetchAndIterateService ;
19+ private $ iteratePagesService ;
2220
2321 /**
2422 * @var Hydrator
2523 */
2624 private $ hydrator ;
2725
2826 /**
29- * @param FetchAndIterateService $fetchAndIterateService
27+ * @param IteratePagesService $iteratePagesService
3028 * @param Hydrator $hydrator
3129 */
32- public function __construct (FetchAndIterateService $ fetchAndIterateService , Hydrator $ hydrator )
30+ public function __construct (IteratePagesService $ iteratePagesService , Hydrator $ hydrator )
3331 {
34- $ this ->fetchAndIterateService = $ fetchAndIterateService ;
32+ $ this ->iteratePagesService = $ iteratePagesService ;
3533 $ this ->hydrator = $ hydrator ;
3634 }
3735
@@ -42,11 +40,12 @@ public function __construct(FetchAndIterateService $fetchAndIterateService, Hydr
4240 public function handle (ChecksCommand $ command ): PromiseInterface
4341 {
4442 return resolve (
45- $ this ->fetchAndIterateService ->iterate (
46- $ command ->getCommit ()->url () . '/check-runs ' ,
47- 'check_runs ' ,
48- CheckInterface::HYDRATE_CLASS
49- )
43+ $ this ->iteratePagesService ->iterate ($ command ->getCommit ()->url () . '/check-runs ' ,)
44+ ->flatMap (function ($ checkRuns ) {
45+ return observableFromArray (get_in ($ checkRuns , ['check_runs ' ], []));
46+ })->map (function ($ checkRun ) {
47+ return $ this ->hydrator ->hydrate (CheckInterface::HYDRATE_CLASS , $ checkRun );
48+ })
5049 );
5150 }
5251}
0 commit comments