Completed
Push — master ( 6eb58a...ff20ae )
by Jan-Petter
03:32
created

Cache   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 12
Bugs 7 Features 0
Metric Value
wmc 5
c 12
b 7
f 0
lcom 1
cbo 3
dl 0
loc 74
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A client() 0 4 1
A cron() 0 4 1
A clean() 0 4 1
A invalidate() 0 4 1
1
<?php
2
namespace vipnytt\RobotsTxtParser;
3
4
use PDO;
5
use vipnytt\RobotsTxtParser\Client\Cache\ManagerInterface;
6
use vipnytt\RobotsTxtParser\Handler\DatabaseHandler;
7
use vipnytt\RobotsTxtParser\Parser\UriParser;
8
9
/**
10
 * Class Cache
11
 *
12
 * @see https://github.com/VIPnytt/RobotsTxtParser/blob/master/docs/methods/CacheManager.md for documentation
13
 * @package vipnytt\RobotsTxtParser
14
 */
15
class Cache implements RobotsTxtInterface
16
{
17
    use UriParser;
18
19
    /**
20
     * Client nextUpdate margin in seconds
21
     * @var int
22
     */
23
    protected $clientUpdateBuffer = 300;
24
25
    /**
26
     * Handler
27
     * @var ManagerInterface
28
     */
29
    private $handler;
30
31
    /**
32
     * Cache constructor.
33
     *
34
     * @param PDO $pdo
35
     * @param array $curlOptions
36
     * @param int|null $byteLimit
37
     */
38
    public function __construct(PDO $pdo, array $curlOptions = [], $byteLimit = self::BYTE_LIMIT)
39
    {
40
        $handler = new DatabaseHandler($pdo);
41
        $this->handler = $handler->cacheManager($curlOptions, $byteLimit);
42
    }
43
44
    /**
45
     * Parser client
46
     *
47
     * @param string $baseUri
48
     * @return TxtClient
49
     */
50
    public function client($baseUri)
51
    {
52
        return $this->handler->client($this->uriBase($baseUri), $this->clientUpdateBuffer);
53
    }
54
55
    /**
56
     * Process the update queue
57
     *
58
     * @param float|int $targetTime
59
     * @param int|null $workerID
60
     * @return string[]
61
     */
62
    public function cron($targetTime = 60, $workerID = null)
63
    {
64
        return $this->handler->cron($targetTime, $workerID);
65
    }
66
67
    /**
68
     * Clean the cache table
69
     *
70
     * @param int $delay - in seconds
71
     * @return bool
72
     */
73
    public function clean($delay = 900)
74
    {
75
        return $this->handler->clean($delay);
76
    }
77
78
    /**
79
     * Invalidate cache
80
     *
81
     * @param $baseUri
82
     * @return bool
83
     */
84
    public function invalidate($baseUri)
85
    {
86
        return $this->handler->invalidate($this->uriBase($baseUri));
87
    }
88
}
89