You've already forked Php-Template
Some checks failed
🧪✨ Tests Workflow / 🧪 ✨ Database Migrations (push) Failing after 2m28s
🧪✨ Tests Workflow / 🛡️ 🔒 License Check (push) Successful in 2m31s
🧪✨ Tests Workflow / 📝 ✨ Code Lint (push) Failing after 2m52s
🧪✨ Tests Workflow / 🛡️ 🔒 Library Audit (push) Successful in 3m7s
🧪✨ Tests Workflow / 🐙 🔍 Code Sniffer (push) Successful in 2m54s
🧪✨ Tests Workflow / 🧪 ✅ Unit Tests (push) Failing after 2m31s
42 lines
1.1 KiB
PHP
42 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Siteworxpro\App\Controllers;
|
|
|
|
use Nyholm\Psr7\Response;
|
|
use Nyholm\Psr7\ServerRequest;
|
|
use OpenApi\Generator;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
|
class OpenApiController extends Controller
|
|
{
|
|
/**
|
|
* Handles the GET request to generate and return the OpenAPI specification.
|
|
*
|
|
* @param ServerRequest $request
|
|
* @return ResponseInterface
|
|
*/
|
|
public function get(ServerRequest $request): ResponseInterface
|
|
{
|
|
$openapi = new Generator()->generate([
|
|
__DIR__ . '/../Controllers',
|
|
__DIR__ . '/../Models',
|
|
__DIR__ . '/../Http/Responses',
|
|
]);
|
|
|
|
$response = new Response();
|
|
|
|
if (
|
|
$request->getHeaderLine('Accept') === 'application/json' ||
|
|
str_contains($request->getUri()->getPath(), '.json')
|
|
) {
|
|
$response->getBody()->write($openapi->toJson());
|
|
return $response->withHeader('Content-Type', 'application/json');
|
|
}
|
|
|
|
$response->getBody()->write($openapi->toYaml());
|
|
return $response->withHeader('Content-Type', 'application/x-yaml');
|
|
}
|
|
}
|