Skip to content

Commit d43a566

Browse files
committed
Support web and proxy source loaders
1 parent af6cab8 commit d43a566

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
@@ -15,7 +15,9 @@
1515
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImagorUriSource;
1616
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgixFolderSource;
1717
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgixProxySource;
18+
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabProxySource;
1819
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabUriSource;
20+
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImglabWebSource;
1921
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgProxyFileSource;
2022
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\ImgProxyUriSource;
2123
use SomehowDigital\Typo3\MediaProcessing\UriBuilder\OptimoleUriSource;
@@ -231,7 +233,16 @@ private function getGumletImageService(array $options): GumletImageService
231233

232234
private function getImglabImageService(array $options): ImglabImageService
233235
{
234-
$source = new ImglabUriSource();
236+
$source = match ($options['source_loader']) {
237+
ImglabWebSource::IDENTIFIER => (static function () use ($options): ImglabWebSource {
238+
return new ImglabWebSource();
239+
})(),
240+
ImglabProxySource::IDENTIFIER => (static function () use ($options): ImglabProxySource {
241+
return new ImglabProxySource(
242+
$options['source_uri'] ?: GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST'),
243+
);
244+
})(),
245+
};
235246

236247
return new ImglabImageService(
237248
$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
@@ -196,6 +196,12 @@
196196
<trans-unit id="integration.imglab.api_endpoint">
197197
<source>API Endpoint URL</source>
198198
</trans-unit>
199+
<trans-unit id="integration.imglab.source_loader">
200+
<source>Source Loader</source>
201+
</trans-unit>
202+
<trans-unit id="integration.imglab.source_uri">
203+
<source>Origin Host URL</source>
204+
</trans-unit>
199205
<trans-unit id="integration.imglab.signature">
200206
<source>Enable URL signing</source>
201207
</trans-unit>

ext_conf_template.txt

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

209+
# cat=imglab; type=options[Web=web, Proxy=proxy]; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.source_loader
210+
source_loader = web
211+
212+
# cat=imglab; type=string; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.source_uri
213+
source_uri =
214+
209215
# cat=imglab; type=boolean; label=LLL:EXT:media_processing/Resources/Private/Language/settings.xlf:integration.imglab.signature
210216
signature = 0
211217

0 commit comments

Comments
 (0)