RandomKeys::nextKey()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Damax\Media\Domain\Storage\Keys;
6
7
use Damax\Media\Domain\Storage\Guesser\Guesser;
8
9
final class RandomKeys implements Keys
10
{
11
    private $guesser;
12
    private $keyLength;
13
14
    public function __construct(Guesser $guesser, int $keyLength)
15
    {
16
        $this->guesser = $guesser;
17
        $this->keyLength = $keyLength;
18
    }
19
20
    public function nextKey($context = []): string
21
    {
22
        $key = bin2hex(random_bytes(intdiv($this->keyLength, 2)));
23
24
        $ext = isset($context['mime_type']) ? $this->guesser->guessExtension($context['mime_type']) : null;
25
26
        $dir = ltrim(($context['prefix'] ?? '') . '/' . date('Y/m/d', time()), '/');
27
28
        return rtrim(sprintf('%s/%s.%s', $dir, $key, $ext), '.');
29
    }
30
}
31