ManufacturerFactory::getManufacturerProvider()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 0
dl 0
loc 12
rs 9.9666
c 0
b 0
f 0
ccs 10
cts 10
cp 1
crap 1
1
<?php
2
/**
3
 * File: ManufacturerFactory.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\Otomoto\Middleware\App\Manufacturer;
10
11
use MSlwk\Otomoto\App\Base\UrlProvider;
12
use MSlwk\Otomoto\App\Manufacturer\ManufacturerProvider;
13
use MSlwk\Otomoto\App\Manufacturer\Scrapper\ManufacturerHtmlScrapper;
14
use MSlwk\Otomoto\App\Manufacturer\Validator\ManufacturersScrappedValidator;
15
use MSlwk\Otomoto\Middleware\Cache\Adapter\CacheAdapterInterface;
16
use MSlwk\Otomoto\Middleware\Cache\Factory\File\FileCacheAdapterFactory;
17
use MSlwk\Otomoto\Middleware\Cache\Factory\File\OptionsProvider\FileDriverOptionsProvider;
18
use MSlwk\Otomoto\Middleware\Webpage\Factory\ReactPHP\ReactPHPAdapterFactory;
19
20
/**
21
 * Class ManufacturerFactory
22
 * @package MSlwk\Otomoto\Middleware\App\Manufacturer
23
 */
24
class ManufacturerFactory
25
{
26
    /**
27
     * @return Manufacturer
28
     */
29 1
    public function create(): Manufacturer
30
    {
31 1
        return new Manufacturer(
32 1
            $this->getCacheAdapter(),
33 1
            $this->getManufacturerProvider(),
34 1
            $this->getManufacturerSerializer()
35
        );
36
    }
37
38
    /**
39
     * @return CacheAdapterInterface
40
     */
41 1
    private function getCacheAdapter(): CacheAdapterInterface
42
    {
43 1
        $cacheAdapterFactory = new FileCacheAdapterFactory(new FileDriverOptionsProvider());
44
45 1
        return $cacheAdapterFactory->createAdapter();
46
    }
47
48
    /**
49
     * @return ManufacturerProvider
50
     */
51 1
    private function getManufacturerProvider(): ManufacturerProvider
52
    {
53 1
        $adapterFactory = new ReactPHPAdapterFactory();
54 1
        $urlProvider = new UrlProvider();
55 1
        $manufacturerHtmlScrapper = new ManufacturerHtmlScrapper();
56 1
        $manufacturerScrapperValidator = new ManufacturersScrappedValidator();
57
58 1
        return new ManufacturerProvider(
59 1
            $adapterFactory,
60 1
            $urlProvider,
61 1
            $manufacturerHtmlScrapper,
62 1
            $manufacturerScrapperValidator
63
        );
64
    }
65
66
    /**
67
     * @return ManufacturerSerializer
68
     */
69 1
    private function getManufacturerSerializer(): ManufacturerSerializer
70
    {
71 1
        return new ManufacturerSerializer();
72
    }
73
}
74