Completed
Push — master ( 00d376...cc54a0 )
by Veaceslav
01:15
created

OperationResponsesBuilder::addResponses()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 4
cts 4
cp 1
rs 9.9332
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Aweapi\Openapi\Builders;
6
7
use Aweapi\Openapi\Objects;
8
9
final class OperationResponsesBuilder implements Objects\OperationResponsesFactory
10
{
11
    use Properties\OptionalExtensions;
12
13
    private $default;
14
15
    private $responses = [];
16
17 1
    public function addResponses(iterable $responses): self
18
    {
19 1
        foreach ($responses as $httpStatus => $response) {
20
            // Force cast to string, because of PHP juggling,
21
            // which converts HTTP status numbers into int.
22 1
            $this->setResponse((string) $httpStatus, $response);
23
        }
24
25 1
        return $this;
26
    }
27
28 5
    public function createOperationResponses(): Objects\OperationResponses
29
    {
30 5
        return new Objects\OperationResponses(
31 5
            array_map(
32
                static function (Objects\ResponseFactory $factory): Objects\Response {
33 3
                    return $factory->createResponse();
34 5
                },
35 5
                $this->getResponses()
36
            ),
37 5
            $this->getDefault() ? $this->getDefault()->createResponse() : null,
38 5
            $this->getExtensions()
39
        );
40
    }
41
42 2
    public function setDefault(Objects\ResponseFactory $response): self
43
    {
44 2
        $this->default = $response;
45
46 2
        return $this;
47
    }
48
49 3
    public function setResponse(string $httpStatus, Objects\ResponseFactory $response): self
50
    {
51 3
        $this->responses[$httpStatus] = $response;
52
53 3
        return $this;
54
    }
55
56 5
    private function getDefault(): ?Objects\ResponseFactory
57
    {
58 5
        return $this->default;
59
    }
60
61 5
    private function getResponses(): array
62
    {
63 5
        return $this->responses;
64
    }
65
}
66