refactor: split service into ServiceBase and LiveService

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-10-07 21:49:31 -04:00
parent eea9b5630a
commit 4e12d41ee9
18 changed files with 649 additions and 516 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ declare(strict_types=1);
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\LiveService;
use KTXM\ProviderImap\Providers\ServiceIdentityBasic;
use KTXM\ProviderImap\Providers\ServiceLocation;
use KTXC\Context\TenantContext;
@@ -162,7 +162,7 @@ class ConnectCommand extends Command
'secret' => $password,
]);
$service = new Service();
$service = new LiveService();
$service->setLocation($location);
$service->setIdentity($identity);
+2 -2
View File
@@ -10,7 +10,7 @@ declare(strict_types=1);
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\ServiceBase;
use KTXC\Context\TenantContext;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
@@ -96,7 +96,7 @@ class DisconnectCommand extends Command
$choices = [];
foreach ($services as $id => $service) {
$label = $service instanceof Service ? ($service->getLabel() ?? $id) : $id;
$label = $service instanceof ServiceBase ? ($service->getLabel() ?? $id) : $id;
$choices[$id] = "{$label} [{$id}]";
}
+2 -2
View File
@@ -10,7 +10,7 @@ declare(strict_types=1);
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\LiveService;
use KTXM\ProviderImap\Providers\ServiceIdentityBasic;
use KTXM\ProviderImap\Providers\ServiceLocation;
use KTXM\ProviderImap\Service\Discovery;
@@ -191,7 +191,7 @@ class DiscoverCommand extends Command
// ── Test before saving ───────────────────────────────────────────────
$service = new Service();
$service = new LiveService();
$service->setLocation($location);
$service->setIdentity((new ServiceIdentityBasic())->jsonDeserialize([
'identity' => $username,
+2 -2
View File
@@ -11,7 +11,7 @@ namespace KTXM\ProviderImap\Console;
use KTXC\Context\TenantContext;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\ServiceBase;
use KTXM\ProviderImap\Service\Cache\HarmonizationService;
use KTXM\ProviderImap\Service\Cache\MessageDeltaService;
use KTXM\ProviderImap\Stores\MailboxStore;
@@ -104,7 +104,7 @@ class HarmonizeCommand extends Command
$this->tenantContext->resolveIdentifier($tenantId);
$service = $this->provider->serviceFetch($tenantId, $userId, $serviceId);
if (!$service instanceof Service) {
if (!$service instanceof ServiceBase) {
$io->error(sprintf("Service '%s' not found.", $serviceId));
return Command::FAILURE;
}
+2 -2
View File
@@ -16,7 +16,7 @@ use KTXM\ProviderImap\Client\Protocol\Command\Argument\MessageTarget;
use KTXM\ProviderImap\Client\Message;
use KTXM\ProviderImap\Client\Protocol\SequenceSet;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\ServiceBase;
use KTXM\ProviderImap\Service\Live\LiveMailService;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
@@ -299,7 +299,7 @@ class TestCommand extends Command
return $limit >= 0 ? $limit : $default;
}
private function formatTarget(Service $service): string
private function formatTarget(ServiceBase $service): string
{
$location = $service->getLocation();
if ($location === null) {