SymfonySerializerAdapterFactory   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 16

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 16
dl 0
loc 30
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 27 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lamoda\IsmpClient\Impl\Serializer;
6
7
use Doctrine\Common\Annotations\AnnotationReader;
8
use Lamoda\IsmpClient\Serializer\SerializerInterface;
9
use Symfony\Component\PropertyAccess\PropertyAccessor;
10
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
11
use Symfony\Component\Serializer\Encoder\JsonEncoder;
12
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
13
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
14
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
15
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
16
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
17
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
18
use Symfony\Component\Serializer\Serializer;
19
20
final class SymfonySerializerAdapterFactory
21
{
22 14
    public static function create(): SerializerInterface
23
    {
24 14
        $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
25 14
        $normalizer = new ObjectNormalizer(
26 14
            $classMetadataFactory,
27 14
            new MetadataAwareNameConverter(
28 14
                $classMetadataFactory,
29 14
                new CamelCaseToSnakeCaseNameConverter()
30
            ),
31 14
            new PropertyAccessor(),
32 14
            new PhpDocExtractor()
33
        );
34
35 14
        $symfonySerializer = new Serializer(
36
            [
37 14
                new V3\FacadeCisListResponseDenormalizer(),
38 14
                new V4\FacadeCisListResponseDenormalizer(),
39 14
                new V3\FacadeDocBodyResponseBodyDenormalizer(),
40 14
                new V4\FacadeDocBodyResponseBodyDenormalizer(),
41 14
                $normalizer,
42 14
                new ArrayDenormalizer(),
43
            ],
44 14
            [new JsonEncoder()]
45
        );
46
47 14
        return new SymfonySerializerAdapter($symfonySerializer);
48
    }
49
}
50