From 85bc5ce595e541443efe70401cf9d9b74a34a8c1 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya <alejandro@alejandrocelaya.com> Date: Sun, 31 Jan 2021 13:12:56 +0100 Subject: [PATCH] Moved transformer to constructor in some actions, to avoid creating it over and over --- .../src/Action/ShortUrl/AbstractCreateShortUrlAction.php | 8 +++----- module/Rest/src/Action/ShortUrl/ListShortUrlsAction.php | 8 +++----- module/Rest/src/Action/ShortUrl/ResolveShortUrlAction.php | 7 +++---- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/module/Rest/src/Action/ShortUrl/AbstractCreateShortUrlAction.php b/module/Rest/src/Action/ShortUrl/AbstractCreateShortUrlAction.php index cfec8cac..a7278457 100644 --- a/module/Rest/src/Action/ShortUrl/AbstractCreateShortUrlAction.php +++ b/module/Rest/src/Action/ShortUrl/AbstractCreateShortUrlAction.php @@ -16,22 +16,20 @@ use Shlinkio\Shlink\Rest\Action\AbstractRestAction; abstract class AbstractCreateShortUrlAction extends AbstractRestAction { private UrlShortenerInterface $urlShortener; - private array $domainConfig; + private ShortUrlDataTransformer $transformer; public function __construct(UrlShortenerInterface $urlShortener, array $domainConfig) { $this->urlShortener = $urlShortener; - $this->domainConfig = $domainConfig; + $this->transformer = new ShortUrlDataTransformer($domainConfig); } public function handle(Request $request): Response { $shortUrlMeta = $this->buildShortUrlData($request); - $shortUrl = $this->urlShortener->shorten($shortUrlMeta); - $transformer = new ShortUrlDataTransformer($this->domainConfig); - return new JsonResponse($transformer->transform($shortUrl)); + return new JsonResponse($this->transformer->transform($shortUrl)); } /** diff --git a/module/Rest/src/Action/ShortUrl/ListShortUrlsAction.php b/module/Rest/src/Action/ShortUrl/ListShortUrlsAction.php index 8da502cf..cd1bb4af 100644 --- a/module/Rest/src/Action/ShortUrl/ListShortUrlsAction.php +++ b/module/Rest/src/Action/ShortUrl/ListShortUrlsAction.php @@ -22,12 +22,12 @@ class ListShortUrlsAction extends AbstractRestAction protected const ROUTE_ALLOWED_METHODS = [self::METHOD_GET]; private ShortUrlServiceInterface $shortUrlService; - private array $domainConfig; + private ShortUrlDataTransformer $transformer; public function __construct(ShortUrlServiceInterface $shortUrlService, array $domainConfig) { $this->shortUrlService = $shortUrlService; - $this->domainConfig = $domainConfig; + $this->transformer = new ShortUrlDataTransformer($domainConfig); } public function handle(Request $request): Response @@ -36,8 +36,6 @@ class ListShortUrlsAction extends AbstractRestAction ShortUrlsParams::fromRawData($request->getQueryParams()), AuthenticationMiddleware::apiKeyFromRequest($request), ); - return new JsonResponse(['shortUrls' => $this->serializePaginator($shortUrls, new ShortUrlDataTransformer( - $this->domainConfig, - ))]); + return new JsonResponse(['shortUrls' => $this->serializePaginator($shortUrls, $this->transformer)]); } } diff --git a/module/Rest/src/Action/ShortUrl/ResolveShortUrlAction.php b/module/Rest/src/Action/ShortUrl/ResolveShortUrlAction.php index 99e58fee..fafd15df 100644 --- a/module/Rest/src/Action/ShortUrl/ResolveShortUrlAction.php +++ b/module/Rest/src/Action/ShortUrl/ResolveShortUrlAction.php @@ -19,22 +19,21 @@ class ResolveShortUrlAction extends AbstractRestAction protected const ROUTE_ALLOWED_METHODS = [self::METHOD_GET]; private ShortUrlResolverInterface $urlResolver; - private array $domainConfig; + private ShortUrlDataTransformer $transformer; public function __construct(ShortUrlResolverInterface $urlResolver, array $domainConfig) { $this->urlResolver = $urlResolver; - $this->domainConfig = $domainConfig; + $this->transformer = new ShortUrlDataTransformer($domainConfig); } public function handle(Request $request): Response { - $transformer = new ShortUrlDataTransformer($this->domainConfig); $url = $this->urlResolver->resolveShortUrl( ShortUrlIdentifier::fromApiRequest($request), AuthenticationMiddleware::apiKeyFromRequest($request), ); - return new JsonResponse($transformer->transform($url)); + return new JsonResponse($this->transformer->transform($url)); } }