ModelFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 19
dl 0
loc 50
rs 10
c 0
b 0
f 0
ccs 22
cts 22
cp 1
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getModelSerializer() 0 3 1
A getCacheAdapter() 0 5 1
A getModelProvider() 0 14 1
A create() 0 6 1
1
<?php
2
/**
3
 * File: ModelFactory.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\Otomoto\Middleware\App\Model;
10
11
use MSlwk\Otomoto\App\Base\UrlProvider;
12
use MSlwk\Otomoto\App\Model\ModelProvider;
13
use MSlwk\Otomoto\App\Model\Scrapper\ModelHtmlScrapper;
14
use MSlwk\Otomoto\App\Manufacturer\Url\ManufacturerUrlSuffixProvider;
15
use MSlwk\Otomoto\App\Model\Validator\ModelsScrappedValidator;
16
use MSlwk\Otomoto\Middleware\Cache\Adapter\CacheAdapterInterface;
17
use MSlwk\Otomoto\Middleware\Cache\Factory\File\FileCacheAdapterFactory;
18
use MSlwk\Otomoto\Middleware\Cache\Factory\File\OptionsProvider\FileDriverOptionsProvider;
19
use MSlwk\Otomoto\Middleware\Slugify\CocurSlugifyAdapter;
20
use MSlwk\Otomoto\Middleware\Webpage\Factory\ReactPHP\ReactPHPAdapterFactory;
21
22
/**
23
 * Class ModelFactory
24
 * @package MSlwk\Otomoto\Middleware\App\Model
25
 */
26
class ModelFactory
27
{
28
    /**
29
     * @return Model
30
     */
31 1
    public function create(): Model
32
    {
33 1
        return new Model(
34 1
            $this->getCacheAdapter(),
35 1
            $this->getModelProvider(),
36 1
            $this->getModelSerializer()
37
        );
38
    }
39
40
    /**
41
     * @return CacheAdapterInterface
42
     */
43 1
    private function getCacheAdapter(): CacheAdapterInterface
44
    {
45 1
        $cacheAdapterFactory = new FileCacheAdapterFactory(new FileDriverOptionsProvider());
46
47 1
        return $cacheAdapterFactory->createAdapter();
48
    }
49
50
    /**
51
     * @return ModelProvider
52
     */
53 1
    private function getModelProvider(): ModelProvider
54
    {
55 1
        $adapterFactory = new ReactPHPAdapterFactory();
56 1
        $urlProvider = new UrlProvider();
57 1
        $modelHtmlScrapper = new ModelHtmlScrapper();
58 1
        $modelScrapperValidator = new ModelsScrappedValidator();
59 1
        $manufacturerUrlSuffixProvider = new ManufacturerUrlSuffixProvider(new CocurSlugifyAdapter());
60
61 1
        return new ModelProvider(
62 1
            $adapterFactory,
63 1
            $urlProvider,
64 1
            $modelHtmlScrapper,
65 1
            $modelScrapperValidator,
66 1
            $manufacturerUrlSuffixProvider
67
        );
68
    }
69
70
    /**
71
     * @return ModelSerializer
72
     */
73 1
    private function getModelSerializer(): ModelSerializer
74
    {
75 1
        return new ModelSerializer();
76
    }
77
}
78