Test Failed
Push — 2.0 ( 0b4092...91a8b2 )
by Zaahid
04:50
created

ParserMessageProxyFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 20
c 1
b 0
f 0
dl 0
loc 52
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 1
A newInstance() 0 20 1
1
<?php
2
3
/**
4
 * This file is part of the ZBateson\MailMimeParser project.
5
 *
6
 * @license http://opensource.org/licenses/bsd-license.php BSD
7
 */
8
9
namespace ZBateson\MailMimeParser\Parser\Proxy;
10
11
use ZBateson\MailMimeParser\Message;
12
use ZBateson\MailMimeParser\Message\PartHeaderContainer;
13
use ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory;
14
use ZBateson\MailMimeParser\Message\Helper\MultipartHelper;
15
use ZBateson\MailMimeParser\Message\Helper\PrivacyHelper;
16
use ZBateson\MailMimeParser\Parser\Part\ParserPartChildrenContainerFactory;
17
use ZBateson\MailMimeParser\Parser\Part\ParserPartStreamContainerFactory;
18
use ZBateson\MailMimeParser\Parser\IParser;
19
use ZBateson\MailMimeParser\Parser\PartBuilder;
20
use ZBateson\MailMimeParser\Stream\StreamFactory;
21
22
/**
23
 * Responsible for creating proxied IMessage instances wrapped in a
24
 * ParserMimePartProxy.
25
 *
26
 * @author Zaahid Bateson
27
 */
28
class ParserMessageProxyFactory extends ParserMimePartProxyFactory
29
{
30
    /**
31
     * @var MultipartHelper
32
     */
33
    protected $multipartHelper;
34
35
    /**
36
     * @var PrivacyHelper
37
     */
38
    protected $privacyHelper;
39
40
    public function __construct(
41
        StreamFactory $sdf,
42
        PartHeaderContainerFactory $phcf,
43
        ParserPartStreamContainerFactory $pscf,
44
        ParserPartChildrenContainerFactory $ppccf,
45
        MultipartHelper $multipartHelper,
46
        PrivacyHelper $privacyHelper
47
    ) {
48
        parent::__construct($sdf, $phcf, $pscf, $ppccf);
49
        $this->multipartHelper = $multipartHelper;
50
        $this->privacyHelper = $privacyHelper;
51
    }
52
53
    /**
54
     * Constructs a new ParserMessageProxy wrapping an IMessage object.
55
     *
56
     * @param PartBuilder $partBuilder
57
     * @param PartHeaderContainer $headerContainer
58
     * @return ParserMimePartProxy
59
     */
60
    public function newInstance(PartBuilder $partBuilder, IParser $parser)
61
    {
62
        $parserProxy = new ParserMessageProxy($partBuilder, $parser);
63
64
        $streamContainer = $this->parserPartStreamContainerFactory->newInstance($parserProxy);
65
        $headerContainer = $this->partHeaderContainerFactory->newInstance($parserProxy->getHeaderContainer());
66
        $childrenContainer = $this->parserPartChildrenContainerFactory->newInstance($parserProxy);
67
68
        $message = new Message(
69
            $streamContainer,
70
            $headerContainer,
71
            $childrenContainer,
72
            $this->multipartHelper,
73
            $this->privacyHelper
74
        );
75
        $parserProxy->setPart($message);
76
77
        $streamContainer->setStream($this->streamFactory->newMessagePartStream($message));
78
        $message->attach($streamContainer);
79
        return $parserProxy;
80
    }
81
82
}
83