RewritesProvider   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 50
c 0
b 0
f 0
wmc 3
lcom 1
cbo 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A getRewrites() 0 13 2
1
<?php
2
declare(strict_types=1);
3
4
/**
5
 * File: RewritesProvider.php
6
 *
7
 * @author      Maciej Sławik <[email protected]>
8
 * Github:      https://github.com/maciejslawik
9
 */
10
11
namespace MSlwk\XmlUrlRewrites\Model;
12
13
use Magento\Framework\Serialize\Serializer\Json;
14
use MSlwk\XmlUrlRewrites\Api\RewritesProviderInterface;
15
use MSlwk\XmlUrlRewrites\Model\Cache\Rewrites;
16
use MSlwk\XmlUrlRewrites\Model\Config\Reader;
17
18
/**
19
 * Class RewritesProvider
20
 * @package MSlwk\XmlUrlRewrites\Model
21
 */
22
class RewritesProvider implements RewritesProviderInterface
23
{
24
    /**
25
     * @var Reader
26
     */
27
    private $rewritesXmlReader;
28
29
    /**
30
     * @var Rewrites
31
     */
32
    private $rewritesCache;
33
34
    /**
35
     * @var Json
36
     */
37
    private $serializer;
38
39
    /**
40
     * RewritesProvider constructor.
41
     * @param Reader $rewritesXmlReader
42
     * @param Rewrites $rewritesCache
43
     * @param Json $serializer
44
     */
45
    public function __construct(
46
        Reader $rewritesXmlReader,
47
        Rewrites $rewritesCache,
48
        Json $serializer
49
    ) {
50
        $this->rewritesXmlReader = $rewritesXmlReader;
51
        $this->rewritesCache = $rewritesCache;
52
        $this->serializer = $serializer;
53
    }
54
55
    /**
56
     * @return array
57
     */
58
    public function getRewrites(): array
59
    {
60
        if (!$this->rewritesCache->load(Rewrites::TYPE_IDENTIFIER)) {
61
            $rewrites = (array)$this->rewritesXmlReader->read();
62
            $this->rewritesCache->save(
63
                $this->serializer->serialize($rewrites),
64
                Rewrites::TYPE_IDENTIFIER
65
            );
66
            return $rewrites;
67
        }
68
        $serializedRewrites = $this->rewritesCache->load(Rewrites::TYPE_IDENTIFIER);
69
        return $this->serializer->unserialize($serializedRewrites);
70
    }
71
}
72