-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathESBHandler.php
More file actions
35 lines (26 loc) · 1.01 KB
/
Copy pathESBHandler.php
File metadata and controls
35 lines (26 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
declare(strict_types=1);
namespace ESB\Handlers\HTTP;
use ESB\DTO\ProcessingData;
use ESB\Entity\Route;
use ESB\Response\ESBJsonResponse;
use ESB\Service\CoreRunnersPool;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use function gc_collect_cycles;
class ESBHandler implements ESBHandlerInterface
{
public function __construct(private readonly CoreRunnersPool $runnersPool)
{
}
public function __invoke(ServerRequestInterface $request, ResponseInterface $response) : ResponseInterface
{
/** @psalm-var Route $route */
$route = $request->getAttribute(Route::class);
/** @psalm-var ProcessingData $routeData */
$routeData = $request->getAttribute(ProcessingData::class);
$result = $this->runnersPool->get($route->customRunner())->runCore($routeData, $route);
gc_collect_cycles();
return new ESBJsonResponse(body: $result->targetResponse()->content, statusCode: $result->targetResponse()->statusCode);
}
}