<?php
namespace ZBateson\MailMimeParser\Header;
use Psr\Log\LoggerInterface;
use ZBateson\MailMimeParser\Header\Consumer\IConsumerService;
use ZBateson\MailMimeParser\Header\Part\MimeToken;
use ZBateson\MailMimeParser\Header\Part\MimeTokenPartFactory;
abstract class MimeEncodedHeader extends AbstractHeader
{
protected MimeTokenPartFactory $mimeTokenPartFactory;
protected $mimeEncodedParsedParts = [];
public function __construct(
LoggerInterface $logger,
MimeTokenPartFactory $mimeTokenPartFactory,
IConsumerService $consumerService,
string $name,
string $value
) {
$this->mimeTokenPartFactory = $mimeTokenPartFactory;
parent::__construct($logger, $consumerService, $name, $value);
}
protected function parseHeaderValue(IConsumerService $consumer, string $value) : void
{
$matchp = '~(' . MimeToken::MIME_PART_PATTERN . ')~';
$aMimeParts = \preg_split($matchp, $value, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$this->mimeEncodedParsedParts = \array_map([$this->mimeTokenPartFactory, 'newInstance'], $aMimeParts);
parent::parseHeaderValue(
$consumer,
\implode('', \array_map(fn ($part) => $part->getValue(), $this->mimeEncodedParsedParts))
);
}
protected function getErrorBagChildren() : array
{
return \array_values(\array_filter(\array_merge($this->getAllParts(), $this->mimeEncodedParsedParts)));
}
}