3
3
namespace ApiClients \Client \Github \CommandBus \Handler \Repository \Commit ;
4
4
5
5
use ApiClients \Client \Github \CommandBus \Command \Repository \Commit \ChecksCommand ;
6
- use ApiClients \Client \Github \CommandBus \Command \Repository \Commit \StatusesCommand ;
7
6
use ApiClients \Client \Github \Resource \Repository \Commit \CheckInterface ;
8
- use ApiClients \Client \Github \Resource \Repository \Commit \StatusInterface ;
9
7
use ApiClients \Client \Github \Service \IteratePagesService ;
10
8
use ApiClients \Foundation \Hydrator \Hydrator ;
11
- use ApiClients \Tools \Services \Client \FetchAndIterateService ;
12
9
use function ApiClients \Tools \Rx \observableFromArray ;
13
10
use React \Promise \PromiseInterface ;
14
11
use function React \Promise \resolve ;
12
+ use function igorw \get_in ;
15
13
16
14
final class ChecksHandler
17
15
{
18
16
/**
19
- * @var FetchAndIterateService
17
+ * @var IteratePagesService
20
18
*/
21
- private $ fetchAndIterateService ;
19
+ private $ iteratePagesService ;
22
20
23
21
/**
24
22
* @var Hydrator
25
23
*/
26
24
private $ hydrator ;
27
25
28
26
/**
29
- * @param FetchAndIterateService $fetchAndIterateService
27
+ * @param IteratePagesService $iteratePagesService
30
28
* @param Hydrator $hydrator
31
29
*/
32
- public function __construct (FetchAndIterateService $ fetchAndIterateService , Hydrator $ hydrator )
30
+ public function __construct (IteratePagesService $ iteratePagesService , Hydrator $ hydrator )
33
31
{
34
- $ this ->fetchAndIterateService = $ fetchAndIterateService ;
32
+ $ this ->iteratePagesService = $ iteratePagesService ;
35
33
$ this ->hydrator = $ hydrator ;
36
34
}
37
35
@@ -42,11 +40,12 @@ public function __construct(FetchAndIterateService $fetchAndIterateService, Hydr
42
40
public function handle (ChecksCommand $ command ): PromiseInterface
43
41
{
44
42
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
+ })
50
49
);
51
50
}
52
51
}
0 commit comments