diff --git a/src/DependencyInjection/OneupFlysystemExtension.php b/src/DependencyInjection/OneupFlysystemExtension.php index 83d9ba5..ffd3634 100644 --- a/src/DependencyInjection/OneupFlysystemExtension.php +++ b/src/DependencyInjection/OneupFlysystemExtension.php @@ -21,16 +21,23 @@ class OneupFlysystemExtension extends Extension public function load(array $configs, ContainerBuilder $container): void { - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('factories.xml'); + if (class_exists(Loader\XmlFileLoader::class)) { + $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loaderExt = '.xml'; + } else { + $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loaderExt = '.php'; + } + + $loader->load('factories' . $loaderExt); $adapterFactories = $this->getFactories($container); $configuration = new Configuration($adapterFactories); $config = $this->processConfiguration($configuration, $configs); - $loader->load('adapters.xml'); - $loader->load('flysystem.xml'); + $loader->load('adapters' . $loaderExt); + $loader->load('flysystem' . $loaderExt); $adapters = []; @@ -45,8 +52,13 @@ public function load(array $configs, ContainerBuilder $container): void public function getConfiguration(array $config, ContainerBuilder $container): Configuration { - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('factories.xml'); + if (class_exists(Loader\XmlFileLoader::class)) { + $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('factories.xml'); + } else { + $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load(resource: 'factories.php'); + } $adapterFactories = $this->getFactories($container); diff --git a/src/Resources/config/adapters.php b/src/Resources/config/adapters.php new file mode 100644 index 0000000..f78cf64 --- /dev/null +++ b/src/Resources/config/adapters.php @@ -0,0 +1,84 @@ +services(); + + $services->set('oneup_flysystem.adapter.local', League\Flysystem\Local\LocalFilesystemAdapter::class)->abstract() + ->args([ + 'location', + 'VisibilityConverter', + 'writeFlags', + 'linkHandling', + 'MimeTypeDetector', + 'lazyRootCreation', + ]) + ; + + $services->set('oneup_flysystem.adapter.awss3v3', League\Flysystem\AwsS3V3\AwsS3V3Adapter::class)->abstract() + ->args([ + 'S3ClientInterface', + 'bucket', + 'prefix', + 'VisibilityConverter', + 'MimeTypeDetector', + 'options', + 'streamReads', + ]); + + $services->set('oneup_flysystem.adapter.ftp', League\Flysystem\Ftp\FtpAdapter::class)->abstract() + ->args([ + 'options', + 'FtpConnectionProvider', + 'ConnectivityChecker', + 'VisibilityConverter', + 'MimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.sftp', League\Flysystem\PhpseclibV3\SftpAdapter::class)->abstract() + ->args([ + 'options', + 'root', + 'VisibilityConverter', + 'MimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.memory', League\Flysystem\InMemory\InMemoryFilesystemAdapter::class)->abstract() + ->args([ + 'defaultVisibility', + ]); + + $services->set('oneup_flysystem.adapter.async_aws_s3', League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter::class)->abstract() + ->args([ + 'Client', + 'Bucket', + 'Prefix', + 'VisibilityConverter', + ]); + + $services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->abstract() + ->args([ + 'Client', + 'Bucket', + 'Prefix', + 'VisibilityHandler', + 'defaultVisibility', + 'mimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->abstract() + ->args([ + 'Client', + 'Prefix', + ]); + + $services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->abstract() + ->args([ + 'Client', + 'Container', + 'Prefix', + ]); +}; diff --git a/src/Resources/config/factories.php b/src/Resources/config/factories.php new file mode 100644 index 0000000..289ccbb --- /dev/null +++ b/src/Resources/config/factories.php @@ -0,0 +1,39 @@ +services(); + + $services->set('oneup_flysystem.adapter_factory.local', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\LocalFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.awss3v3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AwsS3V3Factory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.ftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\FtpFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.sftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\SftpFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.in_memory', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\InMemoryFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.customadapter', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\CustomAdapterFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.async_aws_s3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AsyncAwsS3Factory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.google_cloud_storage', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GoogleCloudStorageFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.gitlab', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GitlabFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.azureblob', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AzureBlobFactory::class) + ->tag('oneup_flysystem.adapter_factory'); +}; diff --git a/src/Resources/config/flysystem.php b/src/Resources/config/flysystem.php new file mode 100644 index 0000000..6387a49 --- /dev/null +++ b/src/Resources/config/flysystem.php @@ -0,0 +1,23 @@ +services(); + + $services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class) + ->public() + ->args([ + 'filesystems', + ]) + ; + + $services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract() + ->args([ + 'adapter', + 'config', + ]) + ; +};