Test Failed
Pull Request — master (#171)
by Zaahid
04:55
created

ParsedMessageFactory::newInstance()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 17
rs 9.8666
1
<?php
2
/**
3
 * This file is part of the ZBateson\MailMimeParser project.
4
 *
5
 * @license http://opensource.org/licenses/bsd-license.php BSD
6
 */
7
namespace ZBateson\MailMimeParser\Parser\Part;
8
9
use Psr\Http\Message\StreamInterface;
10
use ZBateson\MailMimeParser\Message;
11
use ZBateson\MailMimeParser\Message\IMimePart;
12
use ZBateson\MailMimeParser\Message\MessageService;
13
use ZBateson\MailMimeParser\Message\Factory\PartHeaderContainerFactory;
14
use ZBateson\MailMimeParser\Parser\BaseParser;
15
use ZBateson\MailMimeParser\Parser\PartBuilder;
16
use ZBateson\MailMimeParser\Stream\StreamFactory;
17
18
/**
19
 * Responsible for creating ParsedMessage instances.
20
 *
21
 * @author Zaahid Bateson
22
 */
23
class ParsedMessageFactory extends ParsedMimePartFactory
24
{
25
    /**
26
     * @var MessageService helper class for message manipulation routines.
27
     */
28
    protected $messageService;
29
30
    public function __construct(
31
        StreamFactory $sdf,
32
        PartHeaderContainerFactory $hcf,
33
        ParsedPartStreamContainerFactory $pscf,
34
        ParsedPartChildrenContainerFactory $ppccf,
35
        BaseParser $baseParser,
36
        MessageService $mhs
37
    ) {
38
        parent::__construct($sdf, $hcf, $pscf, $ppccf, $baseParser);
39
        $this->messageService = $mhs;
40
    }
41
42
    /**
43
     * Constructs a new IMessage object and returns it
44
     *
45
     * @param PartBuilder $partBuilder
46
     * @param StreamInterface $stream
47
     * @return \ZBateson\MailMimeParser\Message\IMimePart
48
     */
49
    public function newInstance(PartBuilder $partBuilder, IMimePart $parent = null)
50
    {
51
        $streamContainer = $this->parsedPartStreamContainerFactory->newInstance($partBuilder);
52
        $headerContainer = $this->partHeaderContainerFactory->newInstance($partBuilder->getHeaderContainer());
53
        $childrenContainer = $this->parsedPartChildrenContainerFactory->newInstance($partBuilder);
54
55
        $message = new Message(
56
            $streamContainer,
57
            $headerContainer,
58
            $childrenContainer,
59
            $this->messageService
60
        );
61
62
        $partBuilder->setContainers($streamContainer, $childrenContainer);
63
        $streamContainer->setStream($this->streamFactory->newMessagePartStream($message));
64
        $message->attach($streamContainer);
65
        return $message;
66
    }
67
}
68