Files
provider_imap/lib/Client/Protocol/Response/ResponseBuilder.php
Sebastian Krupinski e51c65bf19 feat: initial version
Signed-off-by: Sebastian Krupinski <root@LAPTOP-7DVOR6NC>
2026-02-20 21:44:49 +00:00

50 lines
975 B
PHP

<?php
declare(strict_types=1);
namespace Gricob\IMAP\Protocol\Response;
use BadMethodCallException;
use Gricob\IMAP\Protocol\Response\Line\Line;
use Gricob\IMAP\Protocol\Response\Line\Status\Status;
class ResponseBuilder
{
private ?Status $status = null;
/**
* @var list<Line>
*/
private array $data = [];
public function __construct(private readonly string $statusTag)
{
}
public function addLine(Line $line): void
{
if ($line instanceof Status && $line->tag === $this->statusTag) {
$this->status = $line;
return;
}
$this->data[] = $line;
}
public function hasStatus(): bool
{
return $this->status !== null;
}
public function build(): Response
{
if (null === $this->status) {
throw new BadMethodCallException();
}
return new Response(
$this->status,
$this->data,
);
}
}