Test Setup Failed
Push — master ( d18a68...cd59fd )
by Gabriel
04:36
created

HasCacheStoreTrait::checkForCacheNeeded()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 5
cts 5
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 2
crap 2
1
<?php
2
3
namespace Nip\Filesystem\FilesystemManager;
4
5
use League\Flysystem\Cached\CachedAdapter;
6
use League\Flysystem\Cached\Storage\Memory as MemoryStore;
7
use Nip\Filesystem\Cache;
8
use Nip\Utility\Arr;
9
10
/**
11
 * Trait HasCacheStoreTrait
12
 * @package Nip\Filesystem\FilesystemManager
13
 */
14
trait HasCacheStoreTrait
15
{
16
    /**
17
     * @param $adapter
18
     * @param $config
19
     */
20 2
    protected function checkForCacheNeeded(&$adapter, &$config)
21
    {
22 2
        $cache = Arr::pull($config, 'cache');
23 2
        if (!empty($cache)) {
24 1
            $adapter = $this->createCacheAdapter($adapter, $cache);
25
        }
26 2
    }
27
28
    /**
29
     * @param $adapter
30
     * @param $cache
31
     * @return CachedAdapter
32
     */
33 1
    protected function createCacheAdapter($adapter, $cache)
34
    {
35 1
        return new CachedAdapter($adapter, $this->createCacheStore($cache));
36
    }
37
38
39
    /**
40
     * Create a cache store instance.
41
     *
42
     * @param mixed $config
43
     * @return \League\Flysystem\Cached\CacheInterface|MemoryStore|Cache
44
     *
45
     * @throws \InvalidArgumentException
46
     */
47 1
    protected function createCacheStore($config)
48
    {
49 1
        if ($config === true) {
50 1
            return new MemoryStore;
51
        }
52
53
        $cacheManager = $this->getCacheManager();
54
55
        return new Cache(
56
            $cacheManager->store($config['store']),
57
            $config['prefix'] ?? 'flysystem',
58
            $config['expire'] ?? null
59
        );
60
    }
61
62
    /**
63
     * @return mixed
64
     */
65
    protected function getCacheManager()
66
    {
67
        return app('cache');
68
    }
69
}
70