FlysystemPathProcessor.php in Flysystem 3.x
File
src/PathProcessor/FlysystemPathProcessor.php
View source
<?php
namespace Drupal\flysystem\PathProcessor;
use Drupal\Core\PathProcessor\InboundPathProcessorInterface;
use Symfony\Component\HttpFoundation\Request;
class FlysystemPathProcessor implements InboundPathProcessorInterface {
public function processInbound($path, Request $request) {
if (strpos($path, '/_flysystem/') !== 0) {
return $path;
}
if (!preg_match('|^/_flysystem/([a-zA-Z0-9+.-]+)/|', $path, $matches)) {
return $path;
}
$rest = substr($path, strlen($matches[0]));
if (strpos($rest, 'styles/') === 0 && substr_count($rest, '/') >= 3) {
list(, $image_style, $scheme, $file) = explode('/', $rest, 4);
$request->query
->set('file', $file);
return '/_flysystem/styles/' . $image_style . '/' . $scheme;
}
$request->query
->set('file', $rest);
return '/_flysystem/' . $matches[1];
}
}