From e3a2e933f11e13b8554c69cb7ba9705ff6e04c60 Mon Sep 17 00:00:00 2001 From: Rinsvent Date: Sun, 15 Aug 2021 23:17:20 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D1=83=20?= =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=82=D0=B5=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.lock | 16 +++++++------- src/EventListener/RequestListener.php | 30 ++++++++++++++++++++------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/composer.lock b/composer.lock index 2bdff89..23eaaf6 100644 --- a/composer.lock +++ b/composer.lock @@ -346,16 +346,16 @@ }, { "name": "rinsvent/data2dto", - "version": "v0.0.2", + "version": "v0.0.4", "source": { "type": "git", "url": "https://github.com/Rinsvent/data2dto.git", - "reference": "5ece49e3308b7a93147814ab865fe33bdf751798" + "reference": "10f1937434ff8e38b21ad54963488e40a4ad2a7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Rinsvent/data2dto/zipball/5ece49e3308b7a93147814ab865fe33bdf751798", - "reference": "5ece49e3308b7a93147814ab865fe33bdf751798", + "url": "https://api.github.com/repos/Rinsvent/data2dto/zipball/10f1937434ff8e38b21ad54963488e40a4ad2a7d", + "reference": "10f1937434ff8e38b21ad54963488e40a4ad2a7d", "shasum": "" }, "require": { @@ -371,7 +371,7 @@ "codeception/module-asserts": "^1.0.0", "codeception/module-phpbrowser": "^1.0.0" }, - "type": "project", + "type": "library", "autoload": { "psr-4": { "tests\\": "tests/", @@ -380,14 +380,14 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "proprietary" + "MIT" ], "description": "Convert data to dto object", "support": { "issues": "https://github.com/Rinsvent/data2dto/issues", - "source": "https://github.com/Rinsvent/data2dto/tree/v0.0.2" + "source": "https://github.com/Rinsvent/data2dto/tree/v0.0.4" }, - "time": "2021-08-10T05:59:27+00:00" + "time": "2021-08-15T08:40:09+00:00" }, { "name": "symfony/cache", diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index 6b9ad0d..1e8f345 100644 --- a/src/EventListener/RequestListener.php +++ b/src/EventListener/RequestListener.php @@ -3,12 +3,10 @@ namespace Rinsvent\RequestBundle\EventListener; use Rinsvent\Data2DTO\Data2DtoConverter; -use Rinsvent\Data2DTO\Resolver\TransformerResolverStorage; use Rinsvent\RequestBundle\Annotation\RequestDTO; use Rinsvent\RequestBundle\DTO\Error; use Rinsvent\RequestBundle\DTO\ErrorCollection; use Rinsvent\AttributeExtractor\MethodExtractor; -use Rinsvent\RequestBundle\Service\Transformer\ServiceResolver; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; @@ -36,7 +34,15 @@ class RequestListener /** @var RequestDTO $requestDTO */ while ($requestDTO = $methodExtractor->fetch(RequestDTO::class)) { - $requestDTOInstance = $this->grabRequestDTO($requestDTO, $request->getContent(), $request->query->all(), $request->request->all(), $request->headers->all()); + $requestDTOInstance = $this->grabRequestDTO( + $requestDTO, + $request->get('_route'), + $request->getContent(), + $request->query->all(), + $request->request->all(), + $request->headers->all(), + $request->server->all(), + ); $errorCollection = $this->validate($requestDTOInstance); if ($errorCollection->hasErrors()) { @@ -76,8 +82,15 @@ class RequestListener return $errorCollection; } - protected function grabRequestDTO(RequestDTO $requestDTO, string $content, array $queryParameters = [], array $parameters = [], array $headers = []) - { + protected function grabRequestDTO( + RequestDTO $requestDTO, + string $routeName, + string $content, + array $queryParameters = [], + array $parameters = [], + array $headers = [], + array $server = [], + ) { $data = []; try { $contentData = json_decode($content, true); @@ -88,10 +101,13 @@ class RequestListener $data += $queryParameters; $data += $parameters; $data = $this->grabDataByJsonPath($data, $requestDTO->jsonPath); - $data += $headers; $data2dtoConverter = new Data2DtoConverter(); - return $data2dtoConverter->convert($data, $requestDTO->className); + $result = $data2dtoConverter->convert($data, $requestDTO->className, ['default', 'request', 'source_body', 'route_' . $routeName]); + $result = $data2dtoConverter->convert($headers, $requestDTO->className, ['default', 'request', 'source_headers', 'route_' . $routeName], $result); + $result = $data2dtoConverter->convert($server, $requestDTO->className, ['default', 'request', 'source_server', 'route_' . $routeName], $result); + + return $result; } private function grabDataByJsonPath(array $data, string $jsonPath): array