ConnectionBuilder   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 6
dl 0
loc 63
ccs 0
cts 30
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A make() 0 4 1
A setLogger() 0 6 1
B create() 0 28 6
1
<?php
2
3
namespace ButterAMQP;
4
5
use ButterAMQP\AMQP091\Connection;
6
use ButterAMQP\AMQP091\Wire;
7
use ButterAMQP\Debug\LoggerDecoratedWire;
8
use ButterAMQP\Debug\LoggerDecoratedIO;
9
use ButterAMQP\IO\StreamIO;
10
use Psr\Log\LoggerInterface;
11
12
class ConnectionBuilder
13
{
14
    /**
15
     * @var LoggerInterface
16
     */
17
    protected $logger;
18
19
    /**
20
     * @return ConnectionBuilder
21
     */
22
    public static function make()
23
    {
24
        return new self();
25
    }
26
27
    /**
28
     * Sets a logger.
29
     *
30
     * @param LoggerInterface $logger
31
     *
32
     * @return $this
33
     */
34
    public function setLogger(LoggerInterface $logger)
35
    {
36
        $this->logger = $logger;
37
38
        return $this;
39
    }
40
41
    /**
42
     * @param Url|string|array $url
43
     *
44
     * @return ConnectionInterface
45
     */
46
    public function create($url)
47
    {
48
        if (is_string($url)) {
49
            $url = Url::parse($url);
50
        }
51
52
        if (is_array($url)) {
53
            $url = Url::import($url);
54
        }
55
56
        if (!$url instanceof Url) {
57
            throw new \InvalidArgumentException(sprintf('URL should be a string, an array or an instance of Url class'));
58
        }
59
60
        $io = new StreamIO();
61
62
        if ($this->logger) {
63
            $io = new LoggerDecoratedIO($io, $this->logger);
64
        }
65
66
        $wire = new Wire($io);
67
68
        if ($this->logger) {
69
            $wire = new LoggerDecoratedWire($wire, $this->logger);
70
        }
71
72
        return new Connection($url, $wire);
73
    }
74
}
75