Completed
Pull Request — master (#64)
by Frederik
03:38 queued 01:09
created

InjectSenderHeaderTransport   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 4
dl 0
loc 44
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
A send() 0 24 4
1
<?php
2
declare(strict_types=1);
3
4
namespace Genkgo\Mail\Transport;
5
6
use Genkgo\Mail\AddressList;
7
use Genkgo\Mail\Header\Sender;
8
use Genkgo\Mail\MessageInterface;
9
use Genkgo\Mail\TransportInterface;
10
11
final class InjectSenderHeaderTransport implements TransportInterface
12
{
13
    /**
14
     * @var TransportInterface
15
     */
16
    private $decoratedTransport;
17
18
    /**
19
     * @param TransportInterface $transport
20
     */
21 4
    public function __construct(TransportInterface $transport)
22
    {
23 4
        $this->decoratedTransport = $transport;
24 4
    }
25
26
    /**
27
     * @param MessageInterface $message
28
     * @return void
29
     */
30 4
    public function send(MessageInterface $message): void
31
    {
32 4
        $fromHeaders = $message->getHeader('from');
33 4
        if (!\is_array($fromHeaders)) {
34
            $fromHeaders = \iterator_to_array($fromHeaders);
35
        }
36
37 4
        if (isset($fromHeaders[0])) {
38 3
            $addressList = AddressList::fromString(
39 3
                $fromHeaders[0]->getValue()->getRaw()
40
            );
41
42 3
            if ($addressList->count() > 1) {
43
                $message = $message
44 2
                    ->withHeader(
45 2
                        new Sender(
46 2
                            $addressList->first()
47
                        )
48
                    );
49
            }
50
        }
51
52 4
        $this->decoratedTransport->send($message);
53 4
    }
54
}
55