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

OperationResponsesBuilder   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 3
dl 0
loc 57
ccs 22
cts 22
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A addResponses() 0 10 2
A createOperationResponses() 0 13 2
A setDefault() 0 6 1
A setResponse() 0 6 1
A getDefault() 0 4 1
A getResponses() 0 4 1
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