Passed
Pull Request — master (#41)
by Nicolas
07:46 queued 33s
created

ChunkedMessageMetadata::buildFromHeaders()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 14
ccs 8
cts 8
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 3
nop 1
crap 3
1
<?php
2
3
namespace Puzzle\AMQP\Messages\Chunks;
4
5
use Puzzle\ValueObjects\Uuid;
6
7
final class ChunkedMessageMetadata
8
{
9
    private
10
        $uuid,
11
        $size,
12
        $nbChunks,
13
        $checksum;
14
15 2
    public function __construct(Uuid $uuid, $size, $nbChunks, $checksum)
16
    {
17 2
        $this->uuid = $uuid;
18 2
        $this->size = $size;
19 2
        $this->nbChunks = $nbChunks;
20 2
        $this->checksum = $checksum;
21 2
    }
22
23 2
    public static function buildFromHeaders(array $headers)
24
    {
25 2
        $requiredKeys = ['uuid', 'size', 'nbChunks', 'checksum'];
26
27 2
        foreach($requiredKeys as $key)
28
        {
29 2
            if(! isset($headers[$key]))
30 2
            {
31 1
                throw new \InvalidArgumentException("Missing $key in chunked message metadata");
32
            }
33 1
        }
34
35 1
        return new self(new Uuid($headers['uuid']), $headers['size'], $headers['nbChunks'], $headers['checksum']);
36
    }
37
38 1
    public function uuid()
39
    {
40 1
        return $this->uuid;
41
    }
42
43 1
    public function size()
44
    {
45 1
        return $this->size;
46
    }
47
48 1
    public function nbChunks()
49
    {
50 1
        return $this->nbChunks;
51
    }
52
53 1
    public function checksum()
54
    {
55 1
        return $this->checksum;
56
    }
57
58 2
    public function toHeaders()
59
    {
60
        return [
61 2
            'uuid' => $this->uuid->value(),
62 2
            'size' => $this->size,
63 2
            'checksum' => $this->checksum,
64 2
            'nbChunks' => $this->nbChunks,
65 2
        ];
66
    }
67
}
68