<?php
namespace ZBateson\MailMimeParser\Parser\Proxy;
use Psr\Http\Message\StreamInterface;
use ZBateson\MailMimeParser\Message\IMessagePart;
use ZBateson\MailMimeParser\Message\PartHeaderContainer;
use ZBateson\MailMimeParser\Parser\IParserService;
use ZBateson\MailMimeParser\Parser\PartBuilder;
abstract class ParserPartProxy extends PartBuilder
{
protected IParserService $parser;
protected PartBuilder $partBuilder;
private IMessagePart $part;
public function __construct(PartBuilder $partBuilder, IParserService $parser)
{
$this->partBuilder = $partBuilder;
$this->parser = $parser;
}
public function setPart(IMessagePart $part) : static
{
$this->part = $part;
return $this;
}
public function getPart() : IMessagePart
{
return $this->part;
}
public function parseContent() : static
{
if (!$this->isContentParsed()) {
$this->parser->parseContent($this);
}
return $this;
}
public function parseAll() : static
{
$this->parseContent();
return $this;
}
public function getParent() : ?ParserMimePartProxy
{
return $this->partBuilder->getParent();
}
public function getHeaderContainer() : PartHeaderContainer
{
return $this->partBuilder->getHeaderContainer();
}
public function getStream() : StreamInterface
{
return $this->partBuilder->getStream();
}
public function getMessageResourceHandle() : mixed
{
return $this->partBuilder->getMessageResourceHandle();
}
public function getMessageResourceHandlePos() : int
{
return $this->partBuilder->getMessageResourceHandlePos();
}
public function getStreamPartStartPos() : int
{
return $this->partBuilder->getStreamPartStartPos();
}
public function getStreamPartLength() : int
{
return $this->partBuilder->getStreamPartLength();
}
public function getStreamContentStartPos() : ?int
{
return $this->partBuilder->getStreamContentStartPos();
}
public function getStreamContentLength() : int
{
return $this->partBuilder->getStreamContentLength();
}
public function setStreamPartStartPos(int $streamPartStartPos) : static
{
$this->partBuilder->setStreamPartStartPos($streamPartStartPos);
return $this;
}
public function setStreamPartEndPos(int $streamPartEndPos) : static
{
$this->partBuilder->setStreamPartEndPos($streamPartEndPos);
return $this;
}
public function setStreamContentStartPos(int $streamContentStartPos) : static
{
$this->partBuilder->setStreamContentStartPos($streamContentStartPos);
return $this;
}
public function setStreamPartAndContentEndPos(int $streamContentEndPos) : static
{
$this->partBuilder->setStreamPartAndContentEndPos($streamContentEndPos);
return $this;
}
public function isContentParsed() : bool
{
return $this->partBuilder->isContentParsed();
}
public function isMime() : bool
{
return $this->partBuilder->isMime();
}
public function addError(string $message, string $level) : ParserPartProxy
{
$this->part->addError($message, $level);
return $this;
}
}