Skip to content

Commit

Permalink
[TASK] Improve handling of storage proxy (#775)
Browse files Browse the repository at this point in the history
Previous implementation was too limited and did not resolve properly nested paths on file storage configuration
  • Loading branch information
twoldanski authored Sep 18, 2024
1 parent 203eb09 commit 4c5fe0f
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion Classes/XClass/ResourceLocalDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use FriendsOfTYPO3\Headless\Utility\UrlUtility;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Http\ApplicationType;
use TYPO3\CMS\Core\Http\Uri;
use TYPO3\CMS\Core\Resource\Driver\LocalDriver;
use TYPO3\CMS\Core\Resource\ResourceStorage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
Expand Down Expand Up @@ -42,7 +43,21 @@ protected function determineBaseUrl(): void

if ($this->hasCapability(ResourceStorage::CAPABILITY_PUBLIC)) {
$urlUtility = GeneralUtility::makeInstance(UrlUtility::class)->withRequest($request);
$this->configuration['baseUri'] = $urlUtility->getStorageProxyUrl();

$basePath = match (true) {
(($this->configuration['baseUri'] ?? '') !== '') => $this->configuration['baseUri'],
(($this->configuration['basePath'] ?? '') !== '' && $this->configuration['pathType'] === 'relative') => $this->configuration['basePath'],
default => '',
};

if ($basePath !== '') {
$frontendUri = (new Uri($urlUtility->getFrontendUrl()));

$path = new Uri(trim($basePath, '/'));
$this->configuration['baseUri'] = (string)$frontendUri->withPath('/' . trim((new Uri($urlUtility->getProxyUrl()))->getPath(), '/') . '/' . trim($path->getPath(), '/'));
} else {
$this->configuration['baseUri'] = $urlUtility->getStorageProxyUrl();
}
}

parent::determineBaseUrl();
Expand Down

0 comments on commit 4c5fe0f

Please sign in to comment.