refactor: use custom imap client

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-05-08 00:16:43 -04:00
parent a728aeb11c
commit a8764747fd
179 changed files with 6782 additions and 5907 deletions

View File

@@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
namespace KTXM\ProviderImap\Client;
use KTXM\ProviderImap\Client\Protocol\Response\GreetingResponse;
use KTXM\ProviderImap\Client\Transport\ConnectionInterface;
final class SessionContext
{
/** @var array<string, true> */
private array $capabilities = [];
private SessionState $state = SessionState::Disconnected;
private ?GreetingResponse $greeting = null;
private ?string $selectedMailbox = null;
public function __construct(
private readonly ConnectionConfig $config,
private readonly ConnectionInterface $connection,
) {}
public function config(): ConnectionConfig
{
return $this->config;
}
public function connection(): ConnectionInterface
{
return $this->connection;
}
public function state(): SessionState
{
return $this->state;
}
public function setState(SessionState $state): void
{
$this->state = $state;
}
public function greeting(): ?GreetingResponse
{
return $this->greeting;
}
public function setGreeting(GreetingResponse $greeting): void
{
$this->greeting = $greeting;
}
public function selectedMailbox(): ?string
{
return $this->selectedMailbox;
}
public function setSelectedMailbox(?string $selectedMailbox): void
{
$this->selectedMailbox = $selectedMailbox;
}
/**
* @return list<string>
*/
public function capabilities(): array
{
return array_keys($this->capabilities);
}
public function replaceCapabilities(string ...$capabilities): void
{
$this->capabilities = [];
foreach ($capabilities as $capability) {
$normalized = strtoupper(trim($capability));
if ($normalized === '') {
continue;
}
$this->capabilities[$normalized] = true;
}
}
public function hasCapability(string $capability): bool
{
return isset($this->capabilities[strtoupper($capability)]);
}
}