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

HasCacheStoreTrait   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 58.81%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 4
dl 0
loc 56
ccs 10
cts 17
cp 0.5881
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A checkForCacheNeeded() 0 7 2
A createCacheAdapter() 0 4 1
A createCacheStore() 0 14 2
A getCacheManager() 0 4 1
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