Passed
Push — develop ( a3ce46...991cd4 )
by Florian
12:29
created

ParserLocator::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Parser;
4
5
use App\Enum\EmailTemplate;
6
use App\Exception\ParserNotFoundException;
7
use Psr\Container\ContainerInterface;
8
use Symfony\Contracts\Service\ServiceSubscriberInterface;
9
10
class ParserLocator implements ServiceSubscriberInterface
11
{
12
    public function __construct(
13
        private ContainerInterface $locator
14
    ) {}
15
16
    /**
17
     * {@inheritDoc}
18
     */
19 1
    public static function getSubscribedServices(): array
20
    {
21
        return [
22 1
            EmailTemplate::BIENICI                 => BienIciParser::class,
23
            EmailTemplate::LEBONCOIN               => LeBonCoinParser::class,
24
            EmailTemplate::LOGIC_IMMO              => LogicImmoParser::class,
25
            EmailTemplate::LOGIC_IMMO_PARTNER      => LogicImmoPartnerParser::class,
26
            EmailTemplate::LOGIC_IMMO_NEUF         => LogicImmoNeufParser::class,
27
            EmailTemplate::LOGIC_IMMO_NEUF_PARTNER => LogicImmoNeufPartnerParser::class,
28
            EmailTemplate::OUESTFRANCE_IMMO        => OuestFranceImmoParser::class,
29
            EmailTemplate::OUESTFRANCE_IMMO_2      => OuestFranceImmo2Parser::class,
30
            EmailTemplate::OUESTFRANCE_IMMO_NEUF   => OuestFranceImmoNeufParser::class,
31
            EmailTemplate::PAP                     => PapParser::class,
32
            EmailTemplate::PAP_NEUF                => PapNeufParser::class,
33
            EmailTemplate::PARUVENDU               => ParuVenduParser::class,
34
            EmailTemplate::SELOGER                 => SeLogerParser::class,
35
            EmailTemplate::SELOGER_PARTNER         => SeLogerPartnerParser::class,
36
            EmailTemplate::SELOGER_NEUF            => SeLogerNeufParser::class,
37
            EmailTemplate::SUPERIMMO               => SuperimmoParser::class,
38
            EmailTemplate::SUPERIMMO_NEUF          => SuperimmoNeufParser::class
39
        ];
40
    }
41
42
    /**
43
     * @throws ParserNotFoundException
44
     */
45
    public function get(string $emailTemplate): ParserInterface
46
    {
47
        if (!$this->locator->has($emailTemplate)) {
48
            throw new ParserNotFoundException('No parser found for the email template: ' . $emailTemplate);
49
        }
50
51
        return $this->locator->get($emailTemplate);
52
    }
53
}
54