Completed
Pull Request — master (#41)
by Nicolas
07:53
created

ChunkedMessageMetadata   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 1
dl 0
loc 61
ccs 28
cts 28
cp 1
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A buildFromHeaders() 0 14 3
A uuid() 0 4 1
A size() 0 4 1
A nbChunks() 0 4 1
A checksum() 0 4 1
A toHeaders() 0 9 1
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