From 2cf695e28eed3ecdaca8c33caf452082e7292f97 Mon Sep 17 00:00:00 2001 From: Bertrand Dunogier Date: Fri, 20 Dec 2019 11:34:34 +0100 Subject: [PATCH 1/2] Changed rest routes pattern - /content/objects/{contentId}/currentversion/fields/{identifier}/items redirects to the other route, with the current version number - /content/objects/{contentId}/versions/{versionNo}/fields/{identifier}/items lists the items --- src/Controller/QueryFieldRestController.php | 23 ++++++++++++++++++- src/Symfony/Resources/config/routing/rest.yml | 15 +++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/Controller/QueryFieldRestController.php b/src/Controller/QueryFieldRestController.php index 6656569..6e86045 100644 --- a/src/Controller/QueryFieldRestController.php +++ b/src/Controller/QueryFieldRestController.php @@ -6,6 +6,7 @@ */ namespace EzSystems\EzPlatformQueryFieldType\Controller; +use eZ\Publish\Core\REST\Server\Values\TemporaryRedirect; use EzSystems\EzPlatformQueryFieldType\API\QueryFieldService; use eZ\Publish\API\Repository\ContentService; use eZ\Publish\API\Repository\ContentTypeService; @@ -15,6 +16,7 @@ use eZ\Publish\API\Repository\Values\ContentType\ContentType; use eZ\Publish\Core\REST\Server\Values\ContentList; use eZ\Publish\Core\REST\Server\Values\RestContent; +use Symfony\Component\Routing\RouterInterface; final class QueryFieldRestController { @@ -30,16 +32,21 @@ final class QueryFieldRestController /** @var \eZ\Publish\API\Repository\LocationService */ private $locationService; + /** @var \Symfony\Component\Routing\RouterInterface */ + private $router; + public function __construct( QueryFieldService $queryFieldService, ContentService $contentService, ContentTypeService $contentTypeService, - LocationService $locationService + LocationService $locationService, + RouterInterface $router ) { $this->queryFieldService = $queryFieldService; $this->contentService = $contentService; $this->contentTypeService = $contentTypeService; $this->locationService = $locationService; + $this->router = $router; } public function getResults($contentId, $versionNumber, $fieldDefinitionIdentifier): ContentList @@ -62,6 +69,20 @@ function (Content $content) { ); } + public function redirectToResults(int $contentId, string $fieldDefinitionIdentifier) + { + return new TemporaryRedirect( + $this->router->generate( + 'ezplatform_ezcontentquery_rest_field_version_items', + [ + 'contentId' => $contentId, + 'versionNumber' => $this->contentService->loadContent($contentId)->versionInfo->versionNo, + 'fieldDefinitionIdentifier' => $fieldDefinitionIdentifier + ] + ) + ); + } + private function getContentType(ContentInfo $contentInfo): ContentType { static $contentTypes = []; diff --git a/src/Symfony/Resources/config/routing/rest.yml b/src/Symfony/Resources/config/routing/rest.yml index 63f69d4..5be9b37 100644 --- a/src/Symfony/Resources/config/routing/rest.yml +++ b/src/Symfony/Resources/config/routing/rest.yml @@ -1,9 +1,18 @@ -ezpublish_rest_ezcontentquery_field_results: - path: /api/ezp/v2/content/objects/{contentId}/versions/{versionNumber}/fields/{fieldDefinitionIdentifier}/query/results +ezplatform_ezcontentquery_rest_field_version_items: + path: /api/ezp/v2/content/objects/{contentId}/versions/{versionNumber}/fields/{fieldDefinitionIdentifier}/items defaults: _controller: EzSystems\EzPlatformQueryFieldType\Controller\QueryFieldRestController:getResults methods: [GET] requirements: contentId: \d+ - fieldId: \d+ versionNumber: \d+ + fieldDefinitionIdentifier: \w+ + +ezplatform_ezcontentquery_rest_field_currentversion_items: + path: /api/ezp/v2/content/objects/{contentId}/currentversion/fields/{fieldDefinitionIdentifier}/items + defaults: + _controller: EzSystems\EzPlatformQueryFieldType\Controller\QueryFieldRestController:redirectToResults + methods: [GET] + requirements: + contentId: \d+ + fieldDefinitionIdentifier: \w+ From e8297bb4544026de0cbb8d5749fef6fb457b8a54 Mon Sep 17 00:00:00 2001 From: Bertrand Dunogier Date: Thu, 9 Jan 2020 17:46:21 +0100 Subject: [PATCH 2/2] fixup! Changed rest routes pattern --- src/Controller/QueryFieldRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/QueryFieldRestController.php b/src/Controller/QueryFieldRestController.php index 6e86045..6f13136 100644 --- a/src/Controller/QueryFieldRestController.php +++ b/src/Controller/QueryFieldRestController.php @@ -77,7 +77,7 @@ public function redirectToResults(int $contentId, string $fieldDefinitionIdentif [ 'contentId' => $contentId, 'versionNumber' => $this->contentService->loadContent($contentId)->versionInfo->versionNo, - 'fieldDefinitionIdentifier' => $fieldDefinitionIdentifier + 'fieldDefinitionIdentifier' => $fieldDefinitionIdentifier, ] ) );