Loading s3fs.services.yml +12 −1 Changes for s3fs.services.yml: 12 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,4 +19,15 @@ services: class: Drupal\s3fs\S3fsFileService decorates: file_system decoration_priority: 5 arguments: ['@s3fsfileservice.inner', '@stream_wrapper_manager', '@logger.channel.file', '@s3fs', '@config.factory', '@module_handler', '@file.mime_type.guesser'] arguments: ['@s3fsfileservice.inner', '@stream_wrapper_manager', '@logger.channel.file', '@s3fs', '@config.factory', '@module_handler', '@s3fs.mime_type.guesser'] s3fs.mime_type.guesser: class: Drupal\Core\File\MimeType\MimeTypeGuesser arguments: [ '@stream_wrapper_manager' ] lazy: true s3fs.mime_type.guesser.extension: class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser arguments: [ '@module_handler' ] tags: - { name: s3fs_mime_type_guesser } lazy: true No newline at end of file src/Batch/S3fsFileMigrationBatch.php +1 −1 Changes for src/Batch/S3fsFileMigrationBatch.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -136,7 +136,7 @@ class S3fsFileMigrationBatch implements S3fsFileMigrationBatchInterface { $s3fs = \Drupal::service('s3fs'); $s3 = $s3fs->getAmazonS3Client($config); $streamWrapper = \Drupal::service('stream_wrapper.s3fs'); $mimeGuesser = \Drupal::service('file.mime_type.guesser'); $mimeGuesser = \Drupal::service('s3fs.mime_type.guesser'); if (!isset($context['results']['scheme'])) { $context['results']['scheme'] = $scheme; Loading src/Compiler/S3fsMimeTypePass.php 0 → 100644 +70 −0 Changes for src/Compiler/S3fsMimeTypePass.php: 70 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Drupal\s3fs\Compiler; use Composer\Semver\Semver; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Reference; /** * Adds @s3fs_mime_type_guesser tagged services. * * Handles forward/backwards compatability of MimeTypeGuesser. * * To be removed when D10 is our minimally supported version. * * @internal * * @see https://www.drupal.org/node/3133341 */ class S3fsMimeTypePass implements CompilerPassInterface { /** * {@inheritdoc} */ public function process(ContainerBuilder $container) { $consumer = $container->getDefinition('s3fs.mime_type.guesser'); $tag = 's3fs_mime_type_guesser'; $interface = '\Symfony\Component\Mime\MimeTypeGuesserInterface'; $deprecated_interface = '\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface'; $uses_new_interfaces = Semver::satisfies(\Drupal::VERSION, '>=9.1'); $uses_deprecated_interface = Semver::satisfies(\Drupal::VERSION, '<=9.1'); // Find all tagged handlers. $handlers = []; foreach ($container->findTaggedServiceIds($tag) as $id => $attributes) { // Validate the interface. $handler = $container->getDefinition($id); if (!is_subclass_of($handler->getClass(), $interface)) { // Special handling for $deprecated_interface. if (!is_subclass_of($handler->getClass(), $deprecated_interface) || !$uses_deprecated_interface) { throw new LogicException("Service '$id' does not implement $interface."); } } $handlers[$id] = $attributes[0]['priority'] ?? 0; $interfaces[$id] = $handler->getClass(); } if (empty($handlers)) { throw new LogicException(sprintf("At least one service tagged with '%s' is required.", $tag)); } // Sort all handlers by priority. arsort($handlers, SORT_NUMERIC); // Add a method call for each handler to the consumer service // definition. foreach ($handlers as $id => $priority) { $arguments = [new Reference($id), $priority]; if ($uses_new_interfaces && is_subclass_of($interfaces[$id], $interface)) { $consumer->addMethodCall('addMimeTypeGuesser', $arguments); } elseif ($uses_deprecated_interface) { $consumer->addMethodCall('addGuesser', $arguments); } } } } src/S3fsServiceProvider.php +4 −0 Changes for src/S3fsServiceProvider.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Drupal\s3fs; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\ServiceProviderBase; use Drupal\Core\Site\Settings; use Drupal\s3fs\Compiler\S3fsMimeTypePass; use Symfony\Component\DependencyInjection\Reference; /** Loading Loading @@ -56,6 +57,9 @@ class S3fsServiceProvider extends ServiceProviderBase { * The ContainerBuilder whose service definitions can be checked. */ public function register(ContainerBuilder $container) { $container->addCompilerPass(new S3fsMimeTypePass()); if ($container->hasDefinition('advagg.optimizer.css') && Settings::get('s3fs.use_s3_for_public')) { $container ->register('s3fs.advagg.css_subscriber', 'Drupal\s3fs\EventSubscriber\S3fsAdvAggSubscriber') Loading src/StreamWrapper/S3fsStream.php +1 −1 Changes for src/StreamWrapper/S3fsStream.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -728,7 +728,7 @@ class S3fsStream extends StreamWrapper implements StreamWrapperInterface { $options = $this->getOptions(); $params = $this->getCommandParams($this->getUri()); $mimeGuesser = \Drupal::service('file.mime_type.guesser'); $mimeGuesser = \Drupal::service('s3fs.mime_type.guesser'); if (method_exists($mimeGuesser, 'guessMimeType')) { $contentType = $mimeGuesser->guessMimeType($params['Key']); } Loading Loading
s3fs.services.yml +12 −1 Changes for s3fs.services.yml: 12 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,4 +19,15 @@ services: class: Drupal\s3fs\S3fsFileService decorates: file_system decoration_priority: 5 arguments: ['@s3fsfileservice.inner', '@stream_wrapper_manager', '@logger.channel.file', '@s3fs', '@config.factory', '@module_handler', '@file.mime_type.guesser'] arguments: ['@s3fsfileservice.inner', '@stream_wrapper_manager', '@logger.channel.file', '@s3fs', '@config.factory', '@module_handler', '@s3fs.mime_type.guesser'] s3fs.mime_type.guesser: class: Drupal\Core\File\MimeType\MimeTypeGuesser arguments: [ '@stream_wrapper_manager' ] lazy: true s3fs.mime_type.guesser.extension: class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser arguments: [ '@module_handler' ] tags: - { name: s3fs_mime_type_guesser } lazy: true No newline at end of file
src/Batch/S3fsFileMigrationBatch.php +1 −1 Changes for src/Batch/S3fsFileMigrationBatch.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -136,7 +136,7 @@ class S3fsFileMigrationBatch implements S3fsFileMigrationBatchInterface { $s3fs = \Drupal::service('s3fs'); $s3 = $s3fs->getAmazonS3Client($config); $streamWrapper = \Drupal::service('stream_wrapper.s3fs'); $mimeGuesser = \Drupal::service('file.mime_type.guesser'); $mimeGuesser = \Drupal::service('s3fs.mime_type.guesser'); if (!isset($context['results']['scheme'])) { $context['results']['scheme'] = $scheme; Loading
src/Compiler/S3fsMimeTypePass.php 0 → 100644 +70 −0 Changes for src/Compiler/S3fsMimeTypePass.php: 70 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Drupal\s3fs\Compiler; use Composer\Semver\Semver; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Reference; /** * Adds @s3fs_mime_type_guesser tagged services. * * Handles forward/backwards compatability of MimeTypeGuesser. * * To be removed when D10 is our minimally supported version. * * @internal * * @see https://www.drupal.org/node/3133341 */ class S3fsMimeTypePass implements CompilerPassInterface { /** * {@inheritdoc} */ public function process(ContainerBuilder $container) { $consumer = $container->getDefinition('s3fs.mime_type.guesser'); $tag = 's3fs_mime_type_guesser'; $interface = '\Symfony\Component\Mime\MimeTypeGuesserInterface'; $deprecated_interface = '\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface'; $uses_new_interfaces = Semver::satisfies(\Drupal::VERSION, '>=9.1'); $uses_deprecated_interface = Semver::satisfies(\Drupal::VERSION, '<=9.1'); // Find all tagged handlers. $handlers = []; foreach ($container->findTaggedServiceIds($tag) as $id => $attributes) { // Validate the interface. $handler = $container->getDefinition($id); if (!is_subclass_of($handler->getClass(), $interface)) { // Special handling for $deprecated_interface. if (!is_subclass_of($handler->getClass(), $deprecated_interface) || !$uses_deprecated_interface) { throw new LogicException("Service '$id' does not implement $interface."); } } $handlers[$id] = $attributes[0]['priority'] ?? 0; $interfaces[$id] = $handler->getClass(); } if (empty($handlers)) { throw new LogicException(sprintf("At least one service tagged with '%s' is required.", $tag)); } // Sort all handlers by priority. arsort($handlers, SORT_NUMERIC); // Add a method call for each handler to the consumer service // definition. foreach ($handlers as $id => $priority) { $arguments = [new Reference($id), $priority]; if ($uses_new_interfaces && is_subclass_of($interfaces[$id], $interface)) { $consumer->addMethodCall('addMimeTypeGuesser', $arguments); } elseif ($uses_deprecated_interface) { $consumer->addMethodCall('addGuesser', $arguments); } } } }
src/S3fsServiceProvider.php +4 −0 Changes for src/S3fsServiceProvider.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Drupal\s3fs; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\ServiceProviderBase; use Drupal\Core\Site\Settings; use Drupal\s3fs\Compiler\S3fsMimeTypePass; use Symfony\Component\DependencyInjection\Reference; /** Loading Loading @@ -56,6 +57,9 @@ class S3fsServiceProvider extends ServiceProviderBase { * The ContainerBuilder whose service definitions can be checked. */ public function register(ContainerBuilder $container) { $container->addCompilerPass(new S3fsMimeTypePass()); if ($container->hasDefinition('advagg.optimizer.css') && Settings::get('s3fs.use_s3_for_public')) { $container ->register('s3fs.advagg.css_subscriber', 'Drupal\s3fs\EventSubscriber\S3fsAdvAggSubscriber') Loading
src/StreamWrapper/S3fsStream.php +1 −1 Changes for src/StreamWrapper/S3fsStream.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -728,7 +728,7 @@ class S3fsStream extends StreamWrapper implements StreamWrapperInterface { $options = $this->getOptions(); $params = $this->getCommandParams($this->getUri()); $mimeGuesser = \Drupal::service('file.mime_type.guesser'); $mimeGuesser = \Drupal::service('s3fs.mime_type.guesser'); if (method_exists($mimeGuesser, 'guessMimeType')) { $contentType = $mimeGuesser->guessMimeType($params['Key']); } Loading