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

MessageDecoder::decode()   B

Complexity

Conditions 4
Paths 4

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 4.0072

Importance

Changes 0
Metric Value
dl 0
loc 24
ccs 12
cts 13
cp 0.9231
rs 8.6845
c 0
b 0
f 0
cc 4
eloc 14
nc 4
nop 1
crap 4.0072
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