diff --git a/legacy_hook/src/DocumentationVersions.php b/legacy_hook/src/DocumentationVersions.php index 4b208c27..afe309a4 100644 --- a/legacy_hook/src/DocumentationVersions.php +++ b/legacy_hook/src/DocumentationVersions.php @@ -29,7 +29,7 @@ public function __construct(private ServerRequestInterface $request) * * @return Response */ - public function getVersions(): Response + public function getVersions(string $format = 'HTML'): Response { $pathSegments = $this->resolvePathSegments(); if (count($pathSegments) < 5) { @@ -67,7 +67,10 @@ public function getVersions(): Response // final version entries $validatedVersions = $this->resolvePathInformation($validatedVersions, $pathAfterEntryPoint, $absolutePathToDocsEntryPoint, $entryPoint, $currentVersion, $currentLanguage); - return $this->getHTMLResponse($validatedVersions); + if ($format === 'HTML') { + return $this->getHTMLResponse($validatedVersions); + } + return $this->getJsonResponse($validatedVersions); } protected function resolvePathSegments(): array @@ -181,6 +184,26 @@ protected function getHTMLResponse(array $entries): Response return new Response(200, [], implode(chr(10), array_merge($firstEntries, $secondEntries))); } + + protected function getJsonResponse(array $entries): Response + { + $data = []; + $versions = array_column($entries, 'version'); + array_multisort($versions, SORT_ASC, $entries); + foreach ($entries as $entry) { + $url = str_replace($GLOBALS['_SERVER']['DOCUMENT_ROOT'], '', $entry['path'] ?? ''); + $singleUrl = str_replace($GLOBALS['_SERVER']['DOCUMENT_ROOT'], '', $entry['single_path'] ?? ''); + $data[] = [ + 'url' => $url, + 'singleUrl' => $singleUrl, + 'version' => $entry['version'], + 'language' => $entry['language'], + ]; + } + + return new Response(200, [], json_encode($data)); + } + protected function getEmptyResponse(): Response { return new Response(200, [], ''); diff --git a/legacy_hook/versionsJson.php b/legacy_hook/versionsJson.php new file mode 100644 index 00000000..d14f0bc6 --- /dev/null +++ b/legacy_hook/versionsJson.php @@ -0,0 +1,18 @@ +getVersions('JSON'); +new ResponseEmitter($response);