ErrorDocNormalizer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 47
ccs 19
cts 19
cp 1
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A normalize() 0 21 4
1
<?php
2
namespace Yoanm\JsonRpcHttpServerSwaggerDoc\App\Normalizer\Component;
3
4
use Yoanm\JsonRpcServerDoc\Domain\Model\ErrorDoc;
5
6
/**
7
 * Class ErrorDocNormalizer
8
 */
9
class ErrorDocNormalizer
10
{
11
    /** @var TypeDocNormalizer */
12
    private $typeDocNormalizer;
13
    /** @var ShapeNormalizer */
14
    private $shapeNormalizer;
15
16
    /**
17
     * @param TypeDocNormalizer $TypeDocNormalizer
18
     * @param ShapeNormalizer   $shapeNormalizer
19
     */
20 40
    public function __construct(
21
        TypeDocNormalizer $TypeDocNormalizer,
22
        ShapeNormalizer $shapeNormalizer
23
    ) {
24 40
        $this->typeDocNormalizer = $TypeDocNormalizer;
25 40
        $this->shapeNormalizer = $shapeNormalizer;
26
    }
27
28
    /**
29
     * @param ErrorDoc $errorDoc
30
     *
31
     * @return array
32
     *
33
     * @throws \ReflectionException
34
     */
35 32
    public function normalize(ErrorDoc $errorDoc) : array
36
    {
37 32
        $requiredDoc = ['required' => ['code']];
38 32
        $properties = [
39 32
            'code' => ['example' => $errorDoc->getCode()]
40 32
        ];
41 32
        if (null !== $errorDoc->getDataDoc()) {
42 22
            $properties['data'] = $this->typeDocNormalizer->normalize($errorDoc->getDataDoc());
43 22
            if (false !== $errorDoc->getDataDoc()->isRequired()) {
44 11
                $requiredDoc['required'][] = 'data';
45
            }
46
        }
47 32
        if (null !== $errorDoc->getMessage()) {
48 5
            $properties['message'] = ['example' => $errorDoc->getMessage()];
49
        }
50
51 32
        return [
52 32
            'title' => $errorDoc->getTitle(),
53 32
            'allOf' => [
54 32
                $this->shapeNormalizer->getErrorShapeDefinition(),
55 32
                (['type' => 'object'] + $requiredDoc + ['properties' => $properties]),
56 32
            ],
57 32
        ];
58
    }
59
}
60