Passed
Pull Request — master (#9)
by Nicolas
03:16
created

MessageDecoder   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 8

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 8
dl 0
loc 34
ccs 15
cts 16
cp 0.9375
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B decode() 0 24 4
1
<?php
2
3
namespace Puzzle\AMQP\Messages;
4
5
use Puzzle\AMQP\ReadableMessage;
6
use Puzzle\AMQP\Messages\Bodies\Text;
7
use Puzzle\AMQP\Messages\Bodies\Json;
8
use Puzzle\AMQP\Messages\Bodies\Binary;
9
use Puzzle\AMQP\Messages\Bodies\NullBody;
10
use Psr\Log\LoggerAwareTrait;
11
use Psr\Log\NullLogger;
12
13
class MessageDecoder
14
{
15
    use LoggerAwareTrait;
16
    
17 22
    public function __construct()
18
    {
19 22
        $this->logger = new NullLogger();
20 22
    }
21
    
22 22
    public function decode(ReadableMessage $message)
23
    {
24 22
        $bodyContent = $message->getRawBody();
25 22
        $contentType = $message->getContentType();
26
        
27
        switch($contentType)
28
        {
29 21
            case ContentType::TEXT:
30 6
                return new Text($bodyContent);
31
                
32 15
            case ContentType::JSON:
33 1
                $body = new Json();
34 1
                $body->changeContentWithJson($bodyContent);
35
                
36 1
                return $body;
37
                
38 14
            case ContentType::BINARY:
39
                return new Binary($bodyContent);
40
        }
41
        
42 14
        $this->logger->warning(__CLASS__ . ": unknown content-type, use empty body");
43
        
44 14
        return new NullBody();
45
    }
46
}
47