Skip to content

Commit ec1d85d

Browse files
committed
Support web and proxy source loaders
1 parent 879753e commit ec1d85d

File tree

6 files changed

+70
-2
lines changed

6 files changed

+70
-2
lines changed

Classes/ImageService/ImageServiceFactory.php

+12-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImagorUriSource;
1717
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgixFolderSource;
1818
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgixProxySource;
19+
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabProxySource;
1920
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabUriSource;
21+
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabWebSource;
2022
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgProxyFileSource;
2123
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgProxyUriSource;
2224
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\OptimoleUriSource;
@@ -241,7 +243,16 @@ private function getGumletImageService(array $options): GumletImageService
241243

242244
private function getImglabImageService(array $options): ImglabImageService
243245
{
244-
$source = new ImglabUriSource();
246+
$source = match ($options['source_loader']) {
247+
ImglabWebSource::IDENTIFIER => (static function () use ($options): ImglabWebSource {
248+
return new ImglabWebSource();
249+
})(),
250+
ImglabProxySource::IDENTIFIER => (static function () use ($options): ImglabProxySource {
251+
return new ImglabProxySource(
252+
$options['source_uri'] ?: GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST'),
253+
);
254+
})(),
255+
};
245256

246257
return new ImglabImageService(
247258
$source,

Classes/ImageService/ImglabImageService.php

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public function configureOptions(OptionsResolver $resolver): void
3030
{
3131
$resolver->setDefaults([
3232
'api_endpoint' => null,
33+
'source_loader' => 'web',
34+
'source_uri' => null,
3335
'signature' => false,
3436
'signature_key' => null,
3537
'signature_salt' => null,
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SomehowDigital\Typo3\MediaProcessing\UriBuilder;
6+
7+
use SomehowDigital\Typo3\MediaProcessing\Utility\OnlineMediaUtility;
8+
use TYPO3\CMS\Core\Resource\FileInterface;
9+
10+
class ImglabProxySource implements UriSourceInterface
11+
{
12+
public const IDENTIFIER = 'proxy';
13+
14+
public function __construct(
15+
private readonly string $host,
16+
) {
17+
}
18+
19+
public function getHost(): string
20+
{
21+
return $this->host;
22+
}
23+
24+
public function getSource(FileInterface $file): string
25+
{
26+
$url = OnlineMediaUtility::getPreviewImage($file) ?? $file->getPublicUrl();
27+
28+
return $this->build($url);
29+
}
30+
31+
private function build(string $url): string
32+
{
33+
$path = parse_url($url, PHP_URL_PATH);
34+
$query = parse_url($url, PHP_URL_QUERY) ?? '';
35+
36+
return strtr('%host%/%path%', [
37+
'%host%' => trim($this->getHost(), '/'),
38+
'%path%' => implode('?', array_filter([trim($path, '/'), trim($query)])),
39+
]);
40+
}
41+
}

Classes/UriBuilder/ImglabUriSource.php renamed to Classes/UriBuilder/ImglabWebSource.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
use SomehowDigital\Typo3\MediaProcessing\Utility\OnlineMediaUtility;
88
use TYPO3\CMS\Core\Resource\FileInterface;
99

10-
class ImglabUriSource implements UriSourceInterface
10+
class ImglabWebSource implements UriSourceInterface
1111
{
12+
public const IDENTIFIER = 'web';
13+
1214
public function getSource(FileInterface $file): string
1315
{
1416
$url = OnlineMediaUtility::getPreviewImage($file) ?? $file->getPublicUrl();

Resources/Private/Language/settings.xlf

+6
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@
202202
<trans-unit id="integration.imglab.api_endpoint">
203203
<source>API Endpoint URL</source>
204204
</trans-unit>
205+
<trans-unit id="integration.imglab.source_loader">
206+
<source>Source Loader</source>
207+
</trans-unit>
208+
<trans-unit id="integration.imglab.source_uri">
209+
<source>Origin Host URL</source>
210+
</trans-unit>
205211
<trans-unit id="integration.imglab.signature">
206212
<source>Enable URL signing</source>
207213
</trans-unit>

ext_conf_template.txt

+6
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,12 @@ integration {
212212
# cat=imglab; type=string; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.api_endpoint
213213
api_endpoint =
214214

215+
# cat=imglab; type=options[Web=web, Proxy=proxy]; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.source_loader
216+
source_loader = web
217+
218+
# cat=imglab; type=string; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.source_uri
219+
source_uri =
220+
215221
# cat=imglab; type=boolean; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.signature
216222
signature = 0
217223

0 commit comments

Comments
 (0)