<?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 array $mimeEncodedParsedParts = [];
public function __construct(
LoggerInterface $logger,
protected readonly MimeTokenPartFactory $mimeTokenPartFactory,
IConsumerService $consumerService,
string $name,
string $value
) {
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_merge($this->getAllParts(), $this->mimeEncodedParsedParts));
}
}