From 9233f2dc6d8cbc7d2a63c5420f7bb52851b3b261 Mon Sep 17 00:00:00 2001
From: David Mellen <d.mellen@remind.de>
Date: Wed, 4 Sep 2024 14:57:34 +0200
Subject: [PATCH] feat!: move processImage to FilesService and make output
 configurable

---
 Classes/Service/FilesService.php | 15 +++++++++++++++
 Classes/Service/JsonService.php  | 14 --------------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/Classes/Service/FilesService.php b/Classes/Service/FilesService.php
index 04f081e..30fbc80 100644
--- a/Classes/Service/FilesService.php
+++ b/Classes/Service/FilesService.php
@@ -10,6 +10,7 @@
 use TYPO3\CMS\Core\Resource\FileRepository;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Service\ImageService;
 
 class FilesService
 {
@@ -17,6 +18,8 @@ class FilesService
 
     private FileUtility $fileUtility;
 
+    private ImageService $imageService;
+
     /** @var mixed[] $defaultConfiguration */
     private array $defaultConfiguration;
 
@@ -29,6 +32,18 @@ public function __construct()
         $this->defaultConfiguration = $fullTypoScript ? $fullTypoScript['lib.']['assetProcessingConfiguration.'] : [];
         $this->fileUtility = GeneralUtility::makeInstance(FileUtility::class);
         $this->fileRepository = GeneralUtility::makeInstance(FileRepository::class);
+        $this->imageService = GeneralUtility::makeInstance(ImageService::class);
+    }
+
+    /**
+     * @param mixed[] $configuration
+     * @return mixed[]
+     */
+    public function processImage(int $uid, array $configuration = []): array
+    {
+        $processingConfiguration = $this->getProcessingConfiguration($configuration);
+        $imageObj = $this->imageService->getImage(strval($uid), null, true);
+        return $this->fileUtility->process($imageObj, $processingConfiguration);
     }
 
     /**
diff --git a/Classes/Service/JsonService.php b/Classes/Service/JsonService.php
index d1b97b9..57681fc 100644
--- a/Classes/Service/JsonService.php
+++ b/Classes/Service/JsonService.php
@@ -4,19 +4,15 @@
 
 namespace Remind\Headless\Service;
 
-use FriendsOfTYPO3\Headless\Utility\FileUtility;
 use Psr\Http\Message\ServerRequestInterface;
 use TYPO3\CMS\Core\Pagination\PaginationInterface;
 use TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder;
 use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
-use TYPO3\CMS\Extbase\Service\ImageService;
 
 class JsonService
 {
     public function __construct(
         private readonly UriBuilder $uriBuilder,
-        private readonly ImageService $imageService,
-        private readonly FileUtility $fileUtility,
         RequestBuilder $requestBuilder,
     ) {
         $extbaseRequest = $requestBuilder->build($this->getRequest());
@@ -91,16 +87,6 @@ public function serializePagination(PaginationInterface $pagination, string $que
         return $result;
     }
 
-    /**
-     * TODO: make output configurable, move to FilesService
-     * @return mixed[]
-     */
-    public function processImage(int $uid): array
-    {
-        $imageObj = $this->imageService->getImage(strval($uid), null, true);
-        return $this->fileUtility->processFile($imageObj);
-    }
-
     private function getRequest(): ServerRequestInterface
     {
         return $GLOBALS['TYPO3_REQUEST'];