Completed
Push — master ( 4da634...5f9942 )
by Frederik
04:04
created

OptimalEncodedHeaderValue::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Genkgo\Mail\Header;
5
6
use Genkgo\Mail\Stream\OptimalTransferEncodedTextStream;
7
8
/**
9
 * Class OptimalEncodedHeaderValue
10
 * @package Genkgo\Mail\Header
11
 */
12
final class OptimalEncodedHeaderValue
13
{
14
    /**
15
     *
16
     */
17
    private const FOLDING = "\r\n ";
18
    /**
19
     * @var string
20
     */
21
    private $value;
22
23
    /**
24
     * OptimalEncodedHeaderValue constructor.
25
     * @param string $value
26
     */
27 66
    public function __construct(string $value)
28
    {
29 66
        $this->value = $value;
30 66
    }
31
32
    /**
33
     * @return string
34
     */
35 66
    public function __toString(): string
36
    {
37 66
        $encoded = new OptimalTransferEncodedTextStream($this->value, 68, self::FOLDING);
38
39 66
        $encoding = $encoded->getMetadata(['transfer-encoding'])['transfer-encoding'];
40 66
        if ($encoding === '7bit' || $encoding === '8bit') {
41 63
            return (string) $encoded;
42
        }
43
44 5
        if ($encoding === 'base64') {
45 4
            return sprintf('=?%s?B?%s?=', 'UTF-8', (string) $encoded);
46
        }
47
48 1
        return sprintf('=?%s?Q?%s?=', 'UTF-8', (string) $encoded);
49
    }
50
51
}