@@ 11-59 (lines=49) @@ | ||
8 | use React\Promise\CancellablePromiseInterface; |
|
9 | use React\Promise\ExtendedPromiseInterface; |
|
10 | ||
11 | class BuildMatrix implements Iterator, ExtendedPromiseInterface, CancellablePromiseInterface, EndpointInterface |
|
12 | { |
|
13 | use IteratorTrait; |
|
14 | use LazyPromiseTrait; |
|
15 | use ParentHasClientAwareTrait; |
|
16 | ||
17 | /** |
|
18 | * @var Build |
|
19 | */ |
|
20 | protected $build; |
|
21 | ||
22 | public function __construct(Build $build) |
|
23 | { |
|
24 | $this->setFactory(function () { |
|
25 | return $this->getClient()->requestAsync($this); |
|
26 | }); |
|
27 | $this->setParent($build); |
|
28 | $this->build = $build; |
|
29 | } |
|
30 | ||
31 | public function getRequest(): RequestInterface |
|
32 | { |
|
33 | return $this->parent->getClient()->createRequest( |
|
34 | 'GET', |
|
35 | 'builds/' . $this->build->getId() |
|
36 | ); |
|
37 | } |
|
38 | ||
39 | public function fromResponse(ResponseInterface $response): EndpointInterface |
|
40 | { |
|
41 | $json = json_decode($response->getBody()->getContents()); |
|
42 | $jobs = $this->createJobs($json); |
|
43 | return new JobCollection($this->build, $jobs); |
|
44 | } |
|
45 | ||
46 | protected function createJobs($json) |
|
47 | { |
|
48 | $builds = []; |
|
49 | foreach ($json->jobs as $build) { |
|
50 | $builds[] = new Job($this->build, $build); |
|
51 | } |
|
52 | return $builds; |
|
53 | } |
|
54 | ||
55 | public function matrix() |
|
56 | { |
|
57 | ||
58 | } |
|
59 | } |
|
60 |
@@ 11-54 (lines=44) @@ | ||
8 | use React\Promise\CancellablePromiseInterface; |
|
9 | use React\Promise\ExtendedPromiseInterface; |
|
10 | ||
11 | class Builds implements Iterator, ExtendedPromiseInterface, CancellablePromiseInterface, EndpointInterface |
|
12 | { |
|
13 | use IteratorTrait; |
|
14 | use LazyPromiseTrait; |
|
15 | use ParentHasClientAwareTrait; |
|
16 | ||
17 | /** |
|
18 | * @var Repository |
|
19 | */ |
|
20 | protected $repository; |
|
21 | ||
22 | public function __construct(Repository $repository) |
|
23 | { |
|
24 | $this->setFactory(function () { |
|
25 | return $this->getClient()->requestAsync($this); |
|
26 | }); |
|
27 | $this->setParent($repository); |
|
28 | $this->repository = $repository; |
|
29 | } |
|
30 | ||
31 | public function getRequest(): RequestInterface |
|
32 | { |
|
33 | return $this->parent->getClient()->createRequest( |
|
34 | 'GET', |
|
35 | 'repos/' . $this->repository->getRepository() . '/builds' |
|
36 | ); |
|
37 | } |
|
38 | ||
39 | public function fromResponse(ResponseInterface $response): EndpointInterface |
|
40 | { |
|
41 | $json = json_decode($response->getBody()->getContents()); |
|
42 | $builds = $this->createBuilds($json); |
|
43 | return new BuildCollection($this->repository, $builds); |
|
44 | } |
|
45 | ||
46 | protected function createBuilds($json) |
|
47 | { |
|
48 | $builds = []; |
|
49 | foreach ($json->builds as $build) { |
|
50 | $builds[] = new Build($this->repository, $build); |
|
51 | } |
|
52 | return $builds; |
|
53 | } |
|
54 | } |
|
55 |