Skip to content

Commit 41842c4

Browse files
authored
Fix: allow to disable OpenAPI, Swagger UI (#3968)
* fix: load swagger even when conf is false * fix: change aliases and definitions for swagger disabled in tests * fix: manage necessary services loading * fix typo
1 parent 23141d8 commit 41842c4

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,18 @@ private function registerSwaggerConfiguration(ContainerBuilder $container, array
375375
{
376376
$container->setParameter('api_platform.swagger.versions', $config['swagger']['versions']);
377377

378-
if (empty($config['swagger']['versions'])) {
379-
return;
378+
if (!$config['enable_swagger'] && $config['enable_swagger_ui']) {
379+
throw new RuntimeException('You can not enable the Swagger UI without enabling Swagger, fix this by enabling swagger via the configuration "enable_swagger: true".');
380380
}
381381

382382
$loader->load('json_schema.xml');
383-
$loader->load('swagger.xml');
383+
384+
if (!$config['enable_swagger']) {
385+
return;
386+
}
387+
384388
$loader->load('openapi.xml');
389+
$loader->load('swagger.xml');
385390
$loader->load('swagger-ui.xml');
386391

387392
if (!$config['enable_swagger_ui'] && !$config['enable_re_doc']) {

src/Bridge/Symfony/Bundle/Resources/config/api.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@
242242
<argument>%api_platform.version%</argument>
243243
<argument>null</argument>
244244
<argument on-invalid="null">%api_platform.swagger.versions%</argument>
245-
<argument type="service" id="api_platform.openapi.factory"></argument>
245+
<argument type="service" id="api_platform.openapi.factory" on-invalid="null"></argument>
246246
</service>
247247

248248
<service id="api_platform.action.exception" class="ApiPlatform\Core\Action\ExceptionAction" public="true">

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,9 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo
12401240
'api_platform.http_cache.listener.response.configure',
12411241
'api_platform.http_cache.purger.varnish_client',
12421242
'api_platform.http_cache.purger.varnish',
1243+
'api_platform.json_schema.json_schema_generate_command',
1244+
'api_platform.json_schema.type_factory',
1245+
'api_platform.json_schema.schema_factory',
12431246
'api_platform.listener.view.validate',
12441247
'api_platform.listener.view.validate_query_parameters',
12451248
'api_platform.mercure.listener.response.add_link_header',
@@ -1305,9 +1308,6 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo
13051308
$definitions[] = 'api_platform.swagger.command.swagger_command';
13061309
$definitions[] = 'api_platform.swagger.normalizer.api_gateway';
13071310
$definitions[] = 'api_platform.swagger.normalizer.documentation';
1308-
$definitions[] = 'api_platform.json_schema.type_factory';
1309-
$definitions[] = 'api_platform.json_schema.schema_factory';
1310-
$definitions[] = 'api_platform.json_schema.json_schema_generate_command';
13111311
$definitions[] = 'api_platform.openapi.options';
13121312
$definitions[] = 'api_platform.openapi.normalizer';
13131313
$definitions[] = 'api_platform.openapi.normalizer.api_gateway';
@@ -1363,6 +1363,8 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo
13631363
NumericFilter::class => 'api_platform.doctrine.orm.numeric_filter',
13641364
ExistsFilter::class => 'api_platform.doctrine.orm.exists_filter',
13651365
GraphQlSerializerContextBuilderInterface::class => 'api_platform.graphql.serializer.context_builder',
1366+
TypeFactoryInterface::class => 'api_platform.json_schema.type_factory',
1367+
SchemaFactoryInterface::class => 'api_platform.json_schema.schema_factory',
13661368
];
13671369

13681370
if (\in_array('odm', $doctrineIntegrationsToLoad, true)) {
@@ -1383,8 +1385,6 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo
13831385
// Only when swagger is enabled
13841386
if ($hasSwagger) {
13851387
$aliases += [
1386-
TypeFactoryInterface::class => 'api_platform.json_schema.type_factory',
1387-
SchemaFactoryInterface::class => 'api_platform.json_schema.schema_factory',
13881388
Options::class => 'api_platform.openapi.options',
13891389
OpenApiNormalizer::class => 'api_platform.openapi.normalizer',
13901390
OpenApiFactoryInterface::class => 'api_platform.openapi.factory',

0 commit comments

Comments
 (0)