Completed
Push — master ( c8ea86...04bb20 )
by ARCANEDEV
05:10 queued 05:02
created

Cache::flush()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 2
1
<?php namespace Arcanedev\GeoIP;
2
3
use Arcanedev\GeoIP\Contracts\GeoIPCache;
4
use Illuminate\Contracts\Cache\Repository as Store;
5
6
/**
7
 * Class     Cache
8
 *
9
 * @package  Arcanedev\GeoIP
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class Cache implements GeoIPCache
13
{
14
    /* -----------------------------------------------------------------
15
     |  Properties
16
     | -----------------------------------------------------------------
17
     */
18
19
    /** @var  \Illuminate\Contracts\Cache\Repository */
20
    protected $store;
21
22
    /** @var array */
23
    protected $tags = [];
24
25
    /** @var int */
26
    protected $expires = 30;
27
28
    /* -----------------------------------------------------------------
29
     |  Constructor
30
     | -----------------------------------------------------------------
31
     */
32
33
    /**
34
     * Cache constructor.
35
     *
36
     * @param  \Illuminate\Contracts\Cache\Repository  $store
37
     * @param  array                                   $tags
38
     * @param  int                                     $expires
39
     */
40 18
    public function __construct(Store $store, array $tags, $expires = 30)
41
    {
42 18
        $this->store   = $store;
43 18
        $this->tags    = $tags;
44 18
        $this->expires = $expires;
45 18
    }
46
47
    /* -----------------------------------------------------------------
48
     |  Getters & Setters
49
     | -----------------------------------------------------------------
50
     */
51
52
    /**
53
     * Get the store instance.
54
     *
55
     * @return \Illuminate\Contracts\Cache\Repository
56
     */
57 6
    private function store()
58
    {
59 6
        return empty($this->tags) ? $this->store : $this->store->tags($this->tags);
0 ignored issues
show
Bug introduced by
The method tags() does not seem to exist on object<Illuminate\Contracts\Cache\Repository>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
60
    }
61
62
    /* -----------------------------------------------------------------
63
     |  Main Methods
64
     | -----------------------------------------------------------------
65
     */
66
67
    /**
68
     * Get an item from the cache.
69
     *
70
     * @param  string  $key
71
     *
72
     * @return \Arcanedev\GeoIP\Location|null
73
     */
74 6
    public function get($key)
75
    {
76 6
        return is_array($value = $this->store()->get($key)) ? new Location($value) : null;
77
    }
78
79
    /**
80
     * Set an item in cache.
81
     *
82
     * @param  string  $key
83
     * @param  array   $location
84
     */
85 6
    public function set($key, array $location)
86
    {
87 6
        $this->store()->put($key, $location, $this->expires);
88 6
    }
89
90
    /**
91
     * Flush cache for tags.
92
     */
93
    public function flush()
94
    {
95
        $this->store()->flush();
0 ignored issues
show
Bug introduced by
The method flush() does not seem to exist on object<Illuminate\Contracts\Cache\Repository>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
96
    }
97
}
98