diff --git a/CHANGELOG.md b/CHANGELOG.md index 21d270c..5cffdee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# Version 6.2.0 +* add stream exceptions management + # Version 6.1.2 * Fix BillingAddressComparator diff --git a/composer.json b/composer.json index 6eadd09..e4e19de 100644 --- a/composer.json +++ b/composer.json @@ -44,9 +44,9 @@ } }, "require": { - "php": "^8.3", + "php": "^8.4", "ext-json": "*", - "code-rhapsodie/dataflow-bundle": "^5.6.0", + "code-rhapsodie/dataflow-bundle": "^6.0", "guzzlehttp/promises": "^2.2", "http-interop/http-factory-guzzle": "^1.2", "ibexa/admin-ui": "^5.0", diff --git a/src/Controller/DashboardController.php b/src/Controller/DashboardController.php index 2f4d146..b48f2d6 100644 --- a/src/Controller/DashboardController.php +++ b/src/Controller/DashboardController.php @@ -143,7 +143,7 @@ private function getPager(QueryBuilder $query, Request $request, string $class = if ($class === Job::class && !$this->exceptionHandler instanceof NullExceptionHandler) { $adapter = new TransformingAdapter($adapter, function (array $value) { - $value['exceptions'] = $this->exceptionHandler->find((int) $value['id']) ?? []; + $value['exceptions'] = $this->exceptionHandler->find((int) $value['id']); return $value; }); diff --git a/src/Controller/JobController.php b/src/Controller/JobController.php index 1f2fcbc..7ad69f8 100644 --- a/src/Controller/JobController.php +++ b/src/Controller/JobController.php @@ -14,6 +14,7 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -43,6 +44,15 @@ public function displayLog(int $id): Response $item = $this->jobGateway->find($id); $log = array_map(fn($line) => preg_replace('~#\d+~', "\n$0", (string) $line), $item->getExceptions() ?? []); + if (empty($log) && $item->getStreamExceptions()) { + return new StreamedResponse(function () use ($item) { + while (($line = fgets($item->getStreamExceptions())) !== false) { + echo "
",preg_replace('~#\d+~', "
$0", (string) $line),"