FileLock   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 71
c 0
b 0
f 0
wmc 5
lcom 1
cbo 0
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A lock() 0 5 1
A unlock() 0 4 1
A isLocked() 0 4 1
A getLockDate() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * File: FileLock.php
7
 *
8
 * @author Maciej Sławik <[email protected]>
9
 * @copyright Copyright (C) 2019 Lizard Media (http://lizardmedia.pl)
10
 */
11
12
namespace LizardMedia\VarnishWarmer\Model\LockHandler;
13
14
use Exception;
15
use LizardMedia\VarnishWarmer\Api\LockHandler\LockInterface;
16
use Magento\Framework\App\Filesystem\DirectoryList;
17
use Magento\Framework\Filesystem\Io\File;
18
19
/**
20
 * Class FileLock
21
 * @package LizardMedia\VarnishWarmer\Model\LockHandler
22
 */
23
final class FileLock implements LockInterface
24
{
25
    /**
26
     * @var string
27
     */
28
    private const LOCK_DIR = '/var/log/varnish/';
29
    private const LOCK_FILE = '.varnish.lock.flag';
30
31
    /**
32
     * @var File
33
     */
34
    private $fileHandler;
35
36
    /**
37
     * @var string
38
     */
39
    private $lockDir;
40
41
    /**
42
     * @var string
43
     */
44
    private $lockFile;
45
46
    /**
47
     * FileLock constructor.
48
     * @param DirectoryList $directoryList
49
     * @param File $fileHandler
50
     */
51
    public function __construct(
52
        DirectoryList $directoryList,
53
        File $fileHandler
54
    ) {
55
        $this->lockDir = $directoryList->getRoot() . self::LOCK_DIR;
56
        $this->lockFile = $directoryList->getRoot() . self::LOCK_DIR . self::LOCK_FILE;
57
        $this->fileHandler = $fileHandler;
58
    }
59
60
    /**
61
     * @return void
62
     * @throws Exception
63
     */
64
    public function lock(): void
65
    {
66
        $this->fileHandler->checkAndCreateFolder($this->lockDir);
67
        $this->fileHandler->write($this->lockFile, date('Y-m-d H:i:s'));
68
    }
69
70
    /**
71
     * @return void
72
     */
73
    public function unlock(): void
74
    {
75
        $this->fileHandler->rm($this->lockFile);
76
    }
77
78
    /**
79
     * @return bool
80
     */
81
    public function isLocked(): bool
82
    {
83
        return $this->fileHandler->fileExists($this->lockFile);
84
    }
85
86
    /**
87
     * @return string
88
     */
89
    public function getLockDate(): string
90
    {
91
        return $this->fileHandler->read($this->lockFile);
92
    }
93
}
94