Remove the support of fos-rest

This commit is contained in:
Ilyas Salikhov 2024-10-01 17:18:04 +03:00
parent 73f9b9e8a2
commit e97eba7c1b
16 changed files with 8 additions and 945 deletions

View File

@ -1,125 +0,0 @@
<?php
/*
* This file is part of the NelmioApiDocBundle.
*
* (c) Nelmio <hello@nelm.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Nelmio\ApiDocBundle\Extractor\Handler;
use FOS\RestBundle\Controller\Annotations\QueryParam;
use FOS\RestBundle\Controller\Annotations\RequestParam;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use Nelmio\ApiDocBundle\DataTypes;
use Nelmio\ApiDocBundle\Extractor\HandlerInterface;
use Symfony\Component\Routing\Route;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\Regex;
class FosRestHandler implements HandlerInterface
{
public function handle(ApiDoc $annotation, array $annotations, Route $route, \ReflectionMethod $method): void
{
foreach ($annotations as $annot) {
if ($annot instanceof RequestParam) {
$requirements = $this->handleRequirements($annot->requirements);
$data = [
'required' => $annot->strict && false === $annot->nullable && null === $annot->default,
'dataType' => $requirements . ((property_exists($annot, 'map') ? $annot->map : $annot->array) ? '[]' : ''),
'actualType' => $this->inferType($requirements),
'subType' => null,
'description' => $annot->description,
'readonly' => false,
];
if (false === $annot->strict) {
$data['default'] = $annot->default;
}
$annotation->addParameter($annot->name, $data);
} elseif ($annot instanceof QueryParam) {
if ($annot->strict && false === $annot->nullable && null === $annot->default) {
$annotation->addRequirement($annot->name, [
'requirement' => $this->handleRequirements($annot->requirements) . ((property_exists($annot, 'map') ? $annot->map : $annot->array) ? '[]' : ''),
'dataType' => '',
'description' => $annot->description,
]);
} elseif (null !== $annot->default) {
$annotation->addFilter($annot->name, [
'requirement' => $this->handleRequirements($annot->requirements) . ((property_exists($annot, 'map') ? $annot->map : $annot->array) ? '[]' : ''),
'description' => $annot->description,
'default' => $annot->default,
]);
} elseif (null !== $annot->requirements) {
$annotation->addFilter($annot->name, [
'requirement' => $this->handleRequirements($annot->requirements) . ((property_exists($annot, 'map') ? $annot->map : $annot->array) ? '[]' : ''),
'description' => $annot->description,
]);
} else {
$annotation->addFilter($annot->name, [
'description' => $annot->description,
]);
}
}
}
}
/**
* Handle FOSRestBundle requirements in order to return a string.
*
* @return string
*/
private function handleRequirements($requirements)
{
if (is_object($requirements) && $requirements instanceof Constraint) {
if ($requirements instanceof Regex) {
return $requirements->getHtmlPattern();
}
$class = $requirements::class;
return substr($class, strrpos($class, '\\') + 1);
}
if (is_array($requirements) && isset($requirements['rule'])) {
return (string) $requirements['rule'];
}
if (is_array($requirements) && array_key_exists(0, $requirements)) {
$output = [];
foreach ($requirements as $req) {
if (is_object($req) && $req instanceof Constraint) {
if ($req instanceof Regex) {
$output[] = $req->getHtmlPattern();
} else {
$class = $req::class;
$output[] = substr($class, strrpos($class, '\\') + 1);
}
}
if (is_array($req)) {
if (array_key_exists('_format', $req)) {
$output[] = 'Format: ' . $req['_format'];
} elseif (isset($req['rule'])) {
$output[] = $req['rule'];
}
}
}
return implode(', ', $output);
}
return (string) $requirements;
}
public function inferType($requirement)
{
if (DataTypes::isPrimitive($requirement)) {
return $requirement;
}
return DataTypes::STRING;
}
}

View File

@ -9,7 +9,6 @@
<parameter key="nelmio_api_doc.twig.extension.extra_markdown.class">Nelmio\ApiDocBundle\Twig\Extension\MarkdownExtension</parameter> <parameter key="nelmio_api_doc.twig.extension.extra_markdown.class">Nelmio\ApiDocBundle\Twig\Extension\MarkdownExtension</parameter>
<parameter key="nelmio_api_doc.doc_comment_extractor.class">Nelmio\ApiDocBundle\Util\DocCommentExtractor</parameter> <parameter key="nelmio_api_doc.doc_comment_extractor.class">Nelmio\ApiDocBundle\Util\DocCommentExtractor</parameter>
<parameter key="nelmio_api_doc.extractor.handler.fos_rest.class">Nelmio\ApiDocBundle\Extractor\Handler\FosRestHandler</parameter>
<parameter key="nelmio_api_doc.extractor.handler.jms_security.class">Nelmio\ApiDocBundle\Extractor\Handler\JmsSecurityExtraHandler</parameter> <parameter key="nelmio_api_doc.extractor.handler.jms_security.class">Nelmio\ApiDocBundle\Extractor\Handler\JmsSecurityExtraHandler</parameter>
<parameter key="nelmio_api_doc.extractor.handler.phpdoc.class">Nelmio\ApiDocBundle\Extractor\Handler\PhpDocHandler</parameter> <parameter key="nelmio_api_doc.extractor.handler.phpdoc.class">Nelmio\ApiDocBundle\Extractor\Handler\PhpDocHandler</parameter>
@ -43,10 +42,6 @@
<!-- Extractor Annotation Handlers --> <!-- Extractor Annotation Handlers -->
<service id="nelmio_api_doc.extractor.handler.fos_rest" class="%nelmio_api_doc.extractor.handler.fos_rest.class%" public="false">
<tag name="nelmio_api_doc.extractor.handler"/>
</service>
<service id="nelmio_api_doc.extractor.handler.jms_security" class="%nelmio_api_doc.extractor.handler.jms_security.class%" public="false"> <service id="nelmio_api_doc.extractor.handler.jms_security" class="%nelmio_api_doc.extractor.handler.jms_security.class%" public="false">
<tag name="nelmio_api_doc.extractor.handler"/> <tag name="nelmio_api_doc.extractor.handler"/>
</service> </service>

View File

@ -1,14 +1,6 @@
Other Bundle Annotations Other Bundle Annotations
======================== ========================
This bundle will get information from the following other annotations:
* ``@FOS\RestBundle\Controller\Annotations\RequestParam`` - use as ``parameters``
* ``@FOS\RestBundle\Controller\Annotations\QueryParam`` - use as ``requirements``
(when strict parameter is true), ``filters`` (when strict is false)
* ``@JMS\SecurityExtraBundle\Annotation\Secure`` - set ``authentication`` to true,
``authenticationRoles`` to the given roles
PHPDoc PHPDoc
------ ------

View File

@ -19,7 +19,7 @@ class ApiDocExtractorTest extends WebTestCase
{ {
public const NB_ROUTES_ADDED_BY_DUNGLAS_API_BUNDLE = 5; public const NB_ROUTES_ADDED_BY_DUNGLAS_API_BUNDLE = 5;
private static $ROUTES_QUANTITY_DEFAULT = 36; // Routes in the default view private static $ROUTES_QUANTITY_DEFAULT = 28; // Routes in the default view
private static $ROUTES_QUANTITY_PREMIUM = 5; // Routes in the premium view private static $ROUTES_QUANTITY_PREMIUM = 5; // Routes in the premium view
private static $ROUTES_QUANTITY_TEST = 2; // Routes in the test view private static $ROUTES_QUANTITY_TEST = 2; // Routes in the test view

View File

@ -1,205 +0,0 @@
<?php
/*
* This file is part of the NelmioApiDocBundle.
*
* (c) Nelmio <hello@nelm.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Nelmio\ApiDocBundle\Tests\Extractor;
use Nelmio\ApiDocBundle\Tests\WebTestCase;
class FosRestHandlerTest extends WebTestCase
{
public function testGetWithQueryParamStrict(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamStrictAction', 'test_route_15');
$this->assertNotNull($annotation);
$requirements = $annotation->getRequirements();
$this->assertCount(1, $requirements);
$this->assertArrayHasKey('page', $requirements);
$requirement = $requirements['page'];
$this->assertArrayHasKey('requirement', $requirement);
$this->assertEquals($requirement['requirement'], '\d+');
$this->assertArrayHasKey('description', $requirement);
$this->assertEquals($requirement['description'], 'Page of the overview.');
$this->assertArrayHasKey('dataType', $requirement);
$this->assertArrayNotHasKey('default', $requirement);
}
public function testGetWithQueryParam(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamAction', 'test_route_8');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertCount(1, $filters);
$this->assertArrayHasKey('page', $filters);
$filter = $filters['page'];
$this->assertArrayHasKey('requirement', $filter);
$this->assertEquals($filter['requirement'], '\d+');
$this->assertArrayHasKey('description', $filter);
$this->assertEquals($filter['description'], 'Page of the overview.');
$this->assertArrayHasKey('default', $filter);
$this->assertEquals($filter['default'], '1');
}
public function testGetWithQueryParamNoDefault(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamNoDefaultAction', 'test_route_16');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertCount(1, $filters);
$this->assertArrayHasKey('page', $filters);
$filter = $filters['page'];
$this->assertArrayHasKey('requirement', $filter);
$this->assertEquals($filter['requirement'], '\d+');
$this->assertArrayHasKey('description', $filter);
$this->assertEquals($filter['description'], 'Page of the overview.');
$this->assertArrayNotHasKey('default', $filter);
}
public function testGetWithConstraintAsRequirements(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithConstraintAsRequirements', 'test_route_21');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertCount(1, $filters);
$this->assertArrayHasKey('mail', $filters);
$filter = $filters['mail'];
$this->assertArrayHasKey('requirement', $filter);
$this->assertEquals($filter['requirement'], 'Email');
}
public function testGetWithRequestParam(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithRequestParamAction', 'test_route_11');
$this->assertNotNull($annotation);
$parameters = $annotation->getParameters();
$this->assertCount(1, $parameters);
$this->assertArrayHasKey('param1', $parameters);
$parameter = $parameters['param1'];
$this->assertArrayHasKey('dataType', $parameter);
$this->assertEquals($parameter['dataType'], 'string');
$this->assertArrayHasKey('description', $parameter);
$this->assertEquals($parameter['description'], 'Param1 description.');
$this->assertArrayHasKey('required', $parameter);
$this->assertEquals($parameter['required'], true);
$this->assertArrayNotHasKey('default', $parameter);
}
public function testGetWithRequestParamNullable(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithNullableRequestParamAction', 'test_route_22');
$this->assertNotNull($annotation);
$parameters = $annotation->getParameters();
$this->assertCount(1, $parameters);
$this->assertArrayHasKey('param1', $parameters);
$parameter = $parameters['param1'];
$this->assertArrayHasKey('dataType', $parameter);
$this->assertEquals($parameter['dataType'], 'string');
$this->assertArrayHasKey('description', $parameter);
$this->assertEquals($parameter['description'], 'Param1 description.');
$this->assertArrayHasKey('required', $parameter);
$this->assertEquals($parameter['required'], false);
$this->assertArrayNotHasKey('default', $parameter);
}
public function testWithRequestParamArrayRequirements(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithQueryParamArrayRequirementsAction', 'test_route_29');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertArrayHasKey('param1', $filters);
$this->assertArrayHasKey('requirement', $filters['param1']);
$this->assertEquals('regexp', $filters['param1']['requirement']);
}
public function testWithRequestParamPlainArrayRequirements(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithQueryParamPlainArrayRequirementsAction', 'test_route_30');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertArrayHasKey('param1', $filters);
$this->assertArrayHasKey('requirement', $filters['param1']);
$this->assertEquals('NotNull, NotBlank', $filters['param1']['requirement']);
}
public function testWithRequirementParamNotSet(): void
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithRequirementParamNotSet', 'test_route_31');
$this->assertNotNull($annotation);
$filters = $annotation->getFilters();
$this->assertCount(1, $filters);
$this->assertArrayHasKey('param1', $filters);
$filter = $filters['param1'];
$this->assertArrayNotHasKey('requirement', $filter);
$this->assertArrayHasKey('description', $filter);
$this->assertEquals($filter['description'], 'Param1 description.');
}
}

View File

@ -11,12 +11,9 @@
namespace Nelmio\ApiDocBundle\Tests\Fixtures\Controller; namespace Nelmio\ApiDocBundle\Tests\Fixtures\Controller;
use FOS\RestBundle\Controller\Annotations\QueryParam;
use FOS\RestBundle\Controller\Annotations\RequestParam;
use Nelmio\ApiDocBundle\Annotation\ApiDoc; use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use Nelmio\ApiDocBundle\Tests\Fixtures\DependencyTypePath; use Nelmio\ApiDocBundle\Tests\Fixtures\DependencyTypePath;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Validator\Constraints as Assert;
class TestController class TestController
{ {
@ -128,42 +125,6 @@ class TestController
{ {
} }
/**
* @ApiDoc()
*
* @QueryParam(strict=true, name="page", requirements="\d+", description="Page of the overview.")
*/
public function zActionWithQueryParamStrictAction(): void
{
}
/**
* @ApiDoc()
*
* @QueryParam(name="page", requirements="\d+", default="1", description="Page of the overview.")
*/
public function zActionWithQueryParamAction(): void
{
}
/**
* @ApiDoc()
*
* @QueryParam(name="page", requirements="\d+", description="Page of the overview.")
*/
public function zActionWithQueryParamNoDefaultAction(): void
{
}
/**
* @ApiDoc()
*
* @QueryParam(name="mail", requirements=@Assert\Email, description="Email of someone.")
*/
public function zActionWithConstraintAsRequirements(): void
{
}
/** /**
* @ApiDoc( * @ApiDoc(
* description="Testing JMS", * description="Testing JMS",
@ -184,24 +145,6 @@ class TestController
{ {
} }
/**
* @ApiDoc()
*
* @RequestParam(name="param1", requirements="string", description="Param1 description.")
*/
public function zActionWithRequestParamAction(): void
{
}
/**
* @ApiDoc()
*
* @RequestParam(name="param1", requirements="string", description="Param1 description.", nullable=true)
*/
public function zActionWithNullableRequestParamAction(): void
{
}
/** /**
* @ApiDoc() * @ApiDoc()
*/ */
@ -400,31 +343,4 @@ class TestController
public function routeWithHostAction(): void public function routeWithHostAction(): void
{ {
} }
/**
* @ApiDoc()
*
* @QueryParam(name="param1", requirements={"rule": "regexp", "error_message": "warning"}, description="Param1 description.")
*/
public function routeWithQueryParamArrayRequirementsAction(): void
{
}
/**
* @ApiDoc()
*
* @QueryParam(name="param1", requirements={@Assert\NotNull(), @Assert\NotBlank()}, description="Param1 description.")
*/
public function routeWithQueryParamPlainArrayRequirementsAction(): void
{
}
/**
* @ApiDoc()
*
* @QueryParam(name="param1", description="Param1 description.")
*/
public function zActionWithRequirementParamNotSet(): void
{
}
} }

View File

@ -32,11 +32,6 @@ test_route_7:
methods: [POST] methods: [POST]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::anotherPostAction, _format: json } defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::anotherPostAction, _format: json }
test_route_8:
path: /z-action-with-query-param
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamAction }
test_route_9: test_route_9:
path: /jms-input-test path: /jms-input-test
methods: [POST] methods: [POST]
@ -47,11 +42,6 @@ test_route_10:
methods: [GET] methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::jmsReturnTestAction } defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::jmsReturnTestAction }
test_route_11:
path: /z-action-with-request-param
methods: [POST]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithRequestParamAction }
test_route_12: test_route_12:
path: /secure-route path: /secure-route
schemes: [https] schemes: [https]
@ -89,16 +79,6 @@ test_route_14:
methods: [POST] methods: [POST]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::postTest2Action, _format: json } defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::postTest2Action, _format: json }
test_route_15:
path: /z-action-with-query-param-strict
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamStrictAction }
test_route_16:
path: /z-action-with-query-param-no-default
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithQueryParamNoDefaultAction }
test_route_17: test_route_17:
path: /z-action-with-deprecated-indicator path: /z-action-with-deprecated-indicator
methods: [GET] methods: [GET]
@ -136,16 +116,6 @@ test_route_exclusive:
path: /exclusive path: /exclusive
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::exclusiveAction } defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::exclusiveAction }
test_route_21:
path: /z-action-with-constraint-requirements
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithConstraintAsRequirementsAction }
test_route_22:
path: /z-action-with-nullable-request-param
methods: [POST]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithNullableRequestParamAction }
test_route_list_resource: test_route_list_resource:
path: /api/resources.{_format} path: /api/resources.{_format}
methods: [GET] methods: [GET]
@ -239,21 +209,6 @@ test_route_28:
domain: "%domain_dev%|%domain_prod%" domain: "%domain_dev%|%domain_prod%"
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithHostAction, domain: "%domain_dev%", _format: json } defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithHostAction, domain: "%domain_dev%", _format: json }
test_route_29:
path: /z-query-param-array-requirements
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithQueryParamArrayRequirementsAction }
test_route_30:
path: /z-query-param-plain-array-requirements
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::routeWithQueryParamPlainArrayRequirementsAction }
test_route_31:
path: /z-query-requirement-param-not-set
methods: [GET]
defaults: { _controller: Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::zActionWithRequirementParamNotSet }
test_route_version_checking: test_route_version_checking:
path: /zz-tests-route-version.{_format} path: /zz-tests-route-version.{_format}
methods: [GET] methods: [GET]

View File

@ -32,7 +32,7 @@ class MarkdownFormatterTest extends WebTestCase
$expected = str_replace('DependencyType', 'dependency_type', $expected); $expected = str_replace('DependencyType', 'dependency_type', $expected);
} }
$this->assertEquals($expected, $result . "\n"); $this->assertEquals($expected, $result . "\n", 'file ' . __DIR__ . '/testFormat-result' . $suffix . '.markdown');
} }
public function testFormatOne(): void public function testFormatOne(): void

View File

@ -28,7 +28,7 @@ class SimpleFormatterTest extends WebTestCase
$suffix = class_exists('Dunglas\ApiBundle\DunglasApiBundle') ? '' : '_1'; $suffix = class_exists('Dunglas\ApiBundle\DunglasApiBundle') ? '' : '_1';
$expected = require __DIR__ . '/testFormat-result' . $suffix . '.php'; $expected = require __DIR__ . '/testFormat-result' . $suffix . '.php';
$this->assertEquals($expected, $result); $this->assertEquals($expected, $result, 'file ' . __DIR__ . '/testFormat-result' . $suffix . '.php');
} }
public function testFormatOne(): void public function testFormatOne(): void

View File

@ -1816,91 +1816,6 @@ With multiple lines.',
], ],
'deprecated' => true, 'deprecated' => true,
], ],
12 => [
'method' => 'POST',
'uri' => '/z-action-with-nullable-request-param',
'parameters' => [
'param1' => [
'required' => false,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
13 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
'default' => '1',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
14 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-no-default',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
15 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-strict',
'requirements' => [
'page' => [
'requirement' => '\\d+',
'dataType' => '',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
16 => [
'method' => 'POST',
'uri' => '/z-action-with-request-param',
'parameters' => [
'param1' => [
'required' => true,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
17 => [ 17 => [
'method' => 'ANY', 'method' => 'ANY',
'uri' => '/z-return-jms-and-validator-output', 'uri' => '/z-return-jms-and-validator-output',

View File

@ -853,64 +853,6 @@ _Route with host placeholder_
### `POST` /z-action-with-nullable-request-param ###
#### Parameters ####
param1:
* type: string
* required: false
* description: Param1 description.
### `GET` /z-action-with-query-param ###
#### Filters ####
page:
* Requirement: \d+
* Description: Page of the overview.
* Default: 1
### `GET` /z-action-with-query-param-no-default ###
#### Filters ####
page:
* Requirement: \d+
* Description: Page of the overview.
### `GET` /z-action-with-query-param-strict ###
#### Requirements ####
**page**
- Requirement: \d+
- Description: Page of the overview.
### `POST` /z-action-with-request-param ###
#### Parameters ####
param1:
* type: string
* required: true
* description: Param1 description.
### `ANY` /z-return-jms-and-validator-output ### ### `ANY` /z-return-jms-and-validator-output ###

View File

@ -1967,95 +1967,6 @@ With multiple lines.',
'deprecated' => true, 'deprecated' => true,
'scope' => null, 'scope' => null,
], ],
17 => [
'method' => 'POST',
'uri' => '/z-action-with-nullable-request-param',
'parameters' => [
'param1' => [
'required' => false,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
18 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
'default' => '1',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
19 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-no-default',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
20 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-strict',
'requirements' => [
'page' => [
'requirement' => '\\d+',
'dataType' => '',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
],
21 => [
'method' => 'POST',
'uri' => '/z-action-with-request-param',
'parameters' => [
'param1' => [
'required' => true,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
22 => [ 22 => [
'method' => 'ANY', 'method' => 'ANY',
'uri' => '/z-return-jms-and-validator-output', 'uri' => '/z-return-jms-and-validator-output',

View File

@ -710,96 +710,6 @@ _Route with host placeholder_
### `POST` /z-action-with-nullable-request-param ###
#### Parameters ####
param1:
* type: string
* required: false
* description: Param1 description.
### `GET` /z-action-with-query-param ###
#### Filters ####
page:
* Requirement: \d+
* Description: Page of the overview.
* Default: 1
### `GET` /z-action-with-query-param-no-default ###
#### Filters ####
page:
* Requirement: \d+
* Description: Page of the overview.
### `GET` /z-action-with-query-param-strict ###
#### Requirements ####
**page**
- Requirement: \d+
- Description: Page of the overview.
### `POST` /z-action-with-request-param ###
#### Parameters ####
param1:
* type: string
* required: true
* description: Param1 description.
### `GET` /z-query-param-array-requirements ###
#### Filters ####
param1:
* Requirement: regexp
* Description: Param1 description.
### `GET` /z-query-param-plain-array-requirements ###
#### Filters ####
param1:
* Requirement: NotNull, NotBlank
* Description: Param1 description.
### `GET` /z-query-requirement-param-not-set ###
#### Filters ####
param1:
* Description: Param1 description.
### `ANY` /z-return-jms-and-validator-output ### ### `ANY` /z-return-jms-and-validator-output ###

View File

@ -1750,143 +1750,6 @@ With multiple lines.',
'scope' => null, 'scope' => null,
], ],
12 => [ 12 => [
'method' => 'POST',
'uri' => '/z-action-with-nullable-request-param',
'parameters' => [
'param1' => [
'required' => false,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
13 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
'default' => '1',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
14 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-no-default',
'filters' => [
'page' => [
'requirement' => '\\d+',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
15 => [
'method' => 'GET',
'uri' => '/z-action-with-query-param-strict',
'requirements' => [
'page' => [
'requirement' => '\\d+',
'dataType' => '',
'description' => 'Page of the overview.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
16 => [
'method' => 'POST',
'uri' => '/z-action-with-request-param',
'parameters' => [
'param1' => [
'required' => true,
'dataType' => 'string',
'actualType' => 'string',
'subType' => null,
'description' => 'Param1 description.',
'readonly' => false,
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
17 => [
'method' => 'GET',
'uri' => '/z-query-param-array-requirements',
'filters' => [
'param1' => [
'requirement' => 'regexp',
'description' => 'Param1 description.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
18 => [
'method' => 'GET',
'uri' => '/z-query-param-plain-array-requirements',
'filters' => [
'param1' => [
'requirement' => 'NotNull, NotBlank',
'description' => 'Param1 description.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
19 => [
'method' => 'GET',
'uri' => '/z-query-requirement-param-not-set',
'filters' => [
'param1' => [
'description' => 'Param1 description.',
],
],
'https' => false,
'authentication' => false,
'authenticationRoles' => [
],
'deprecated' => false,
'scope' => null,
],
20 => [
'method' => 'ANY', 'method' => 'ANY',
'uri' => '/z-return-jms-and-validator-output', 'uri' => '/z-return-jms-and-validator-output',
'response' => [ 'response' => [
@ -2006,7 +1869,7 @@ With multiple lines.',
'deprecated' => false, 'deprecated' => false,
'scope' => null, 'scope' => null,
], ],
21 => [ 13 => [
'method' => 'ANY', 'method' => 'ANY',
'uri' => '/z-return-selected-parsers-input', 'uri' => '/z-return-selected-parsers-input',
'parameters' => [ 'parameters' => [
@ -2054,7 +1917,7 @@ With multiple lines.',
'deprecated' => false, 'deprecated' => false,
'scope' => null, 'scope' => null,
], ],
22 => [ 14 => [
'method' => 'ANY', 'method' => 'ANY',
'uri' => '/z-return-selected-parsers-output', 'uri' => '/z-return-selected-parsers-output',
'response' => [ 'response' => [
@ -2174,7 +2037,7 @@ With multiple lines.',
'deprecated' => false, 'deprecated' => false,
'scope' => null, 'scope' => null,
], ],
23 => [ 15 => [
'method' => 'POST', 'method' => 'POST',
'uri' => '/zcached', 'uri' => '/zcached',
'https' => false, 'https' => false,
@ -2184,7 +2047,7 @@ With multiple lines.',
'deprecated' => false, 'deprecated' => false,
'scope' => null, 'scope' => null,
], ],
24 => [ 16 => [
'method' => 'POST', 'method' => 'POST',
'uri' => '/zsecured', 'uri' => '/zsecured',
'https' => false, 'https' => false,
@ -2194,7 +2057,7 @@ With multiple lines.',
'deprecated' => false, 'deprecated' => false,
'scope' => null, 'scope' => null,
], ],
25 => [ 17 => [
'method' => 'GET', 'method' => 'GET',
'uri' => '/zz-tests-route-version.{_format}', 'uri' => '/zz-tests-route-version.{_format}',
'requirements' => [ 'requirements' => [

View File

@ -13,9 +13,5 @@ if ((!$loader = includeIfExists(__DIR__ . '/../vendor/autoload.php')) && (!$load
'php composer.phar install' . PHP_EOL); 'php composer.phar install' . PHP_EOL);
} }
if (class_exists('Doctrine\Common\Annotations\AnnotationRegistry')) {
Doctrine\Common\Annotations\AnnotationRegistry::registerLoader([$loader, 'loadClass']);
}
// force loading the ApiDoc annotation since the composer target-dir autoloader does not run through $loader::loadClass // force loading the ApiDoc annotation since the composer target-dir autoloader does not run through $loader::loadClass
class_exists('Nelmio\ApiDocBundle\Annotation\ApiDoc'); class_exists('Nelmio\ApiDocBundle\Annotation\ApiDoc');

View File

@ -25,7 +25,6 @@
"require-dev": { "require-dev": {
"doctrine/annotations": "^1.0", "doctrine/annotations": "^1.0",
"friendsofphp/php-cs-fixer": "^3", "friendsofphp/php-cs-fixer": "^3",
"friendsofsymfony/rest-bundle": "^3.7",
"jms/serializer": "^3.15", "jms/serializer": "^3.15",
"jms/serializer-bundle": "^4.1|^5.4", "jms/serializer-bundle": "^4.1|^5.4",
"phpunit/phpunit": "~9.5", "phpunit/phpunit": "~9.5",
@ -45,7 +44,6 @@
"suggest": { "suggest": {
"symfony/form": "For using form definitions as input.", "symfony/form": "For using form definitions as input.",
"symfony/validator": "For making use of validator information in the doc.", "symfony/validator": "For making use of validator information in the doc.",
"friendsofsymfony/rest-bundle": "For making use of REST information in the doc.",
"jms/serializer": "For making use of serializer information in the doc." "jms/serializer": "For making use of serializer information in the doc."
}, },
"autoload": { "autoload": {