Completed
Push — master ( 7fdc78...830b42 )
by Jonathan
11s
created

IssueFetcher::getMilestoneIssuesUrl()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 3
dl 0
loc 12
rs 9.4285
c 0
b 0
f 0
ccs 8
cts 8
cp 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ChangelogGenerator;
6
7
use function count;
8
9
class IssueFetcher
10
{
11
    /** @var IssueClient */
12
    private $issueClient;
13
14 1
    public function __construct(IssueClient $issueClient)
15
    {
16 1
        $this->issueClient = $issueClient;
17 1
    }
18
19
    /**
20
     * @return mixed[]
21
     */
22 1
    public function fetchMilestoneIssues(ChangelogConfig $changelogConfig) : array
23
    {
24 1
        $labels = $changelogConfig->getLabels();
25 1
        $labels = count($labels) === 0 ? [''] : $labels;
26
27 1
        $issues = [];
28
29 1
        foreach ($labels as $label) {
30 1
            $url = $changelogConfig->getMilestoneIssuesUrl($label);
31
32 1
            while (true) {
33 1
                $response = $this->issueClient->execute($url);
34
35 1
                $body = $response->getBody();
36
37 1
                foreach ($body['items'] as $item) {
38 1
                    $issues[] = $item;
39
                }
40
41 1
                $nextUrl = $response->getNextUrl();
42
43 1
                if ($nextUrl !== null) {
44 1
                    $url = $nextUrl;
45
46 1
                    continue;
47
                }
48
49 1
                break;
50
            }
51
        }
52
53 1
        return $issues;
54
    }
55
}
56