feat: implement provider

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-03-28 12:43:42 -04:00
parent c322317ddc
commit 4c948d177a
39 changed files with 2267 additions and 113 deletions

View File

@@ -35,8 +35,8 @@ final readonly class TraceableResponseStream implements ResponseStream
private function debug(string $data): void
{
$data = addslashes($data);
$data = str_replace("\r\n", "\\r\\n", $data);
// $data = addslashes($data);
// $data = str_replace("\r\n", "\\r\\n", $data);
$this->logger->debug($data);
}

View File

@@ -7,12 +7,12 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Console;
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImapMail\Providers\Provider;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImapMail\Providers\ServiceIdentityBasic;
use KTXM\ProviderImapMail\Providers\ServiceLocation;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\ServiceIdentityBasic;
use KTXM\ProviderImap\Providers\ServiceLocation;
use KTXC\SessionTenant;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;

View File

@@ -7,10 +7,10 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Console;
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImapMail\Providers\Provider;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXC\SessionTenant;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;

View File

@@ -7,14 +7,14 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Console;
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImapMail\Providers\Provider;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImapMail\Providers\ServiceIdentityBasic;
use KTXM\ProviderImapMail\Providers\ServiceLocation;
use KTXM\ProviderImapMail\Service\Discovery;
use KTXM\ProviderImapMail\Service\Remote\RemoteService;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Providers\ServiceIdentityBasic;
use KTXM\ProviderImap\Providers\ServiceLocation;
use KTXM\ProviderImap\Service\Discovery;
use KTXM\ProviderImap\Service\Remote\RemoteService;
use KTXC\SessionTenant;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;

View File

@@ -7,11 +7,11 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Console;
namespace KTXM\ProviderImap\Console;
use KTXM\ProviderImapMail\Providers\Provider;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImapMail\Service\Remote\RemoteService;
use KTXM\ProviderImap\Providers\Provider;
use KTXM\ProviderImap\Providers\Service;
use KTXM\ProviderImap\Service\Remote\RemoteService;
use KTXC\SessionTenant;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;

View File

@@ -7,18 +7,18 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail;
namespace KTXM\ProviderImap;
use KTXC\Resource\ProviderManager;
use KTXF\Module\ModuleBrowserInterface;
use KTXF\Module\ModuleConsoleInterface;
use KTXF\Module\ModuleInstanceAbstract;
use KTXF\Resource\Provider\ProviderInterface;
use KTXM\ProviderImapMail\Console\ServiceConnectCommand;
use KTXM\ProviderImapMail\Console\ServiceDiscoverCommand;
use KTXM\ProviderImapMail\Console\ServiceDisconnectCommand;
use KTXM\ProviderImapMail\Console\ServiceTestCommand;
use KTXM\ProviderImapMail\Providers\Provider as MailProvider;
use KTXM\ProviderImap\Console\ServiceConnectCommand;
use KTXM\ProviderImap\Console\ServiceDiscoverCommand;
use KTXM\ProviderImap\Console\ServiceDisconnectCommand;
use KTXM\ProviderImap\Console\ServiceTestCommand;
use KTXM\ProviderImap\Providers\Provider as MailProvider;
/**
* IMAP Mail Provider Module
@@ -33,7 +33,7 @@ class Module extends ModuleInstanceAbstract implements ModuleConsoleInterface, M
public function handle(): string
{
return 'provider_imap_mail';
return 'provider_imap';
}
public function label(): string
@@ -59,7 +59,7 @@ class Module extends ModuleInstanceAbstract implements ModuleConsoleInterface, M
public function permissions(): array
{
return [
'provider_imap_mail' => [
'provider_imap' => [
'label' => 'Access IMAP Mail Provider',
'description' => 'View and access the IMAP mail provider module',
'group' => 'Providers',
@@ -86,7 +86,7 @@ class Module extends ModuleInstanceAbstract implements ModuleConsoleInterface, M
{
return [
'handle' => $this->handle(),
'namespace' => 'ProviderImapMail',
'namespace' => 'ProviderImap',
'version' => $this->version(),
'label' => $this->label(),
'author' => $this->author(),

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use Gricob\IMAP\Mailbox;
use KTXF\Mail\Collection\CollectionPropertiesMutableAbstract;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use Gricob\IMAP\Mailbox;
use KTXF\Mail\Collection\CollectionMutableAbstract;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use DateTimeInterface;
use Gricob\IMAP\Mime\Part\Part;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
/**
* Mail Attachment Object

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use Gricob\IMAP\Protocol\Response\Line\Data\Fetch\BodyStructure\MultiPart;
use Gricob\IMAP\Protocol\Response\Line\Data\Fetch\BodyStructure\Part;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use DateTimeImmutable;
use DateTimeInterface;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use KTXF\Mail\Provider\ProviderBaseInterface;
use KTXF\Mail\Provider\ProviderServiceDiscoverInterface;
@@ -16,9 +16,9 @@ use KTXF\Mail\Provider\ProviderServiceTestInterface;
use KTXF\Mail\Service\ServiceBaseInterface;
use KTXF\Resource\Provider\ResourceServiceLocationInterface;
use KTXF\Resource\Provider\ResourceServiceMutateInterface;
use KTXM\ProviderImapMail\Service\Discovery;
use KTXM\ProviderImapMail\Service\Remote\RemoteService;
use KTXM\ProviderImapMail\Stores\ServiceStore;
use KTXM\ProviderImap\Service\Discovery;
use KTXM\ProviderImap\Service\Remote\RemoteService;
use KTXM\ProviderImap\Stores\ServiceStore;
/**
* IMAP Mail Provider

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use Generator;
use KTXF\Mail\Collection\CollectionBaseInterface;
@@ -29,10 +29,10 @@ use KTXF\Resource\Range\RangeTally;
use KTXF\Resource\Range\RangeType;
use KTXF\Resource\Sort\ISort;
use KTXF\Resource\Sort\Sort;
use KTXM\ProviderImapMail\Providers\ServiceIdentityBasic;
use KTXM\ProviderImapMail\Providers\ServiceLocation;
use KTXM\ProviderImapMail\Service\Remote\RemoteMailService;
use KTXM\ProviderImapMail\Service\Remote\RemoteService;
use KTXM\ProviderImap\Providers\ServiceIdentityBasic;
use KTXM\ProviderImap\Providers\ServiceLocation;
use KTXM\ProviderImap\Service\Remote\RemoteMailService;
use KTXM\ProviderImap\Service\Remote\RemoteService;
/**
* IMAP Mail Service

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use KTXF\Resource\Provider\ResourceServiceIdentityBasic;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
use Gricob\IMAP\Configuration;
use KTXF\Resource\Provider\ResourceServiceLocationInterface;

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Providers;
namespace KTXM\ProviderImap\Providers;
enum ServiceMode: string
{

View File

@@ -7,11 +7,11 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Service\Cache;
namespace KTXM\ProviderImap\Service\Cache;
use KTXM\ProviderImapMail\Providers\CollectionResource;
use KTXM\ProviderImapMail\Providers\EntityResource;
use KTXM\ProviderImapMail\Stores\MessageStore;
use KTXM\ProviderImap\Providers\CollectionResource;
use KTXM\ProviderImap\Providers\EntityResource;
use KTXM\ProviderImap\Stores\MessageStore;
/**
* Cache Mail Service

View File

@@ -7,12 +7,12 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Service\Cache;
namespace KTXM\ProviderImap\Service\Cache;
use KTXM\ProviderImapMail\Providers\CollectionResource;
use KTXM\ProviderImapMail\Providers\EntityResource;
use KTXM\ProviderImapMail\Service\Remote\RemoteMailService;
use KTXM\ProviderImapMail\Stores\MessageStore;
use KTXM\ProviderImap\Providers\CollectionResource;
use KTXM\ProviderImap\Providers\EntityResource;
use KTXM\ProviderImap\Service\Remote\RemoteMailService;
use KTXM\ProviderImap\Stores\MessageStore;
/**
* Cache Service — IMAP Sync Orchestrator

View File

@@ -7,9 +7,9 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Service;
namespace KTXM\ProviderImap\Service;
use KTXM\ProviderImapMail\Providers\ServiceLocation;
use KTXM\ProviderImap\Providers\ServiceLocation;
/**
* IMAP Service Discovery

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Service\Remote;
namespace KTXM\ProviderImap\Service\Remote;
use DateTimeImmutable;
use Generator;
@@ -28,8 +28,8 @@ use KTXF\Resource\Filter\IFilter;
use KTXF\Resource\Range\IRange;
use KTXF\Resource\Range\RangeAnchorType;
use KTXF\Resource\Range\RangeTally;
use KTXM\ProviderImapMail\Providers\CollectionResource;
use KTXM\ProviderImapMail\Providers\EntityResource;
use KTXM\ProviderImap\Providers\CollectionResource;
use KTXM\ProviderImap\Providers\EntityResource;
/**
* IMAP Remote Mail Service

View File

@@ -7,12 +7,12 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Service\Remote;
namespace KTXM\ProviderImap\Service\Remote;
use Gricob\IMAP\Client;
use KTXC\Server;
use KTXC\Logger\PlainFileLogger;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImap\Providers\Service;
/**
* Static factory for IMAP remote service objects.

View File

@@ -7,7 +7,7 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Stores;
namespace KTXM\ProviderImap\Stores;
use KTXC\Db\DataStore;

View File

@@ -7,12 +7,12 @@ declare(strict_types=1);
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXM\ProviderImapMail\Stores;
namespace KTXM\ProviderImap\Stores;
use KTXC\Db\DataStore;
use KTXF\Security\Crypto;
use KTXF\Utile\UUID;
use KTXM\ProviderImapMail\Providers\Service;
use KTXM\ProviderImap\Providers\Service;
/**
* IMAP Service Store