PublicSuffixNormalizer::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
namespace W2w\Lib\ApieDomainPlugin\Normalizers;
4
5
use Pdp\Exception\CouldNotResolvePublicSuffix;
6
use Pdp\PublicSuffix;
7
use Pdp\Rules;
8
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
9
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
10
use W2w\Lib\Apie\Exceptions\InvalidValueForValueObjectException;
11
12
class PublicSuffixNormalizer implements NormalizerInterface, DenormalizerInterface
13
{
14
    private $rules;
15
16
    public function __construct(Rules $rules)
17
    {
18
        $this->rules = $rules;
19
    }
20
21
    public function denormalize($data, $class, $format = null, array $context = [])
22
    {
23
        try {
24
            $suffix = $this->rules->getPublicSuffix('test.' . ltrim($data, '.'), Rules::ICANN_DOMAINS);
25
            if (!$suffix->isKnown()) {
26
                throw new InvalidValueForValueObjectException($data, PublicSuffix::class);
27
            }
28
        } catch (CouldNotResolvePublicSuffix $e) {
29
            throw new InvalidValueForValueObjectException($data, PublicSuffix::class);
30
        }
31
        return $suffix;
32
    }
33
34
    public function supportsDenormalization($data, $type, $format = null)
35
    {
36
        return $type === PublicSuffix::class;
37
    }
38
39
    public function normalize($object, $format = null, array $context = [])
40
    {
41
        /** @var PublicSuffix $object */
42
        return (string) $object;
43
    }
44
45
    public function supportsNormalization($data, $format = null)
46
    {
47
        return $data instanceof PublicSuffix;
48
    }
49
}
50