mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-10 03:29:25 +03:00
Fix an issue caused by #1007
This commit is contained in:
parent
6776d7880e
commit
0bd45e6486
@ -15,9 +15,13 @@ use FOS\RestBundle\Controller\Annotations\ParamInterface;
|
|||||||
use phpDocumentor\Reflection\DocBlockFactory;
|
use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
|
use Symfony\Component\DependencyInjection\Definition;
|
||||||
|
use Symfony\Component\DependencyInjection\Reference;
|
||||||
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
|
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
|
||||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||||
|
use Symfony\Component\Routing\RouteCollection;
|
||||||
|
use Nelmio\ApiDocBundle\Routing\FilteredRouteCollectionBuilder;
|
||||||
|
|
||||||
final class NelmioApiDocExtension extends Extension implements PrependExtensionInterface
|
final class NelmioApiDocExtension extends Extension implements PrependExtensionInterface
|
||||||
{
|
{
|
||||||
@ -40,8 +44,22 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
|
|||||||
$loader->load('services.xml');
|
$loader->load('services.xml');
|
||||||
|
|
||||||
// Filter routes
|
// Filter routes
|
||||||
$routeCollectionBuilder = $container->getDefinition('nelmio_api_doc.filtered_route_collection_builder');
|
$routesDefinition = (new Definition(RouteCollection::class))
|
||||||
$routeCollectionBuilder->replaceArgument(0, $config['routes']['path_patterns']);
|
->setFactory([new Reference('router'), 'getRouteCollection']);
|
||||||
|
|
||||||
|
if (0 === count($config['routes']['path_patterns'])) {
|
||||||
|
$container->setDefinition('nelmio_api_doc.routes', $routesDefinition)
|
||||||
|
->setPublic(false);
|
||||||
|
} else {
|
||||||
|
$container->register('nelmio_api_doc.routes', RouteCollection::class)
|
||||||
|
->setPublic(false)
|
||||||
|
->setFactory([
|
||||||
|
(new Definition(FilteredRouteCollectionBuilder::class))
|
||||||
|
->addArgument($config['routes']['path_patterns']),
|
||||||
|
'filter']
|
||||||
|
)
|
||||||
|
->addArgument($routesDefinition);
|
||||||
|
}
|
||||||
|
|
||||||
// Import services needed for each library
|
// Import services needed for each library
|
||||||
$loader->load('swagger_php.xml');
|
$loader->load('swagger_php.xml');
|
||||||
|
@ -21,19 +21,6 @@
|
|||||||
<argument type="service" id="controller_name_converter" />
|
<argument type="service" id="controller_name_converter" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="nelmio_api_doc.filtered_route_collection" class="Symfony\Component\Routing\RouteCollection" public="false">
|
|
||||||
<factory service="nelmio_api_doc.filtered_route_collection_builder" method="filter" />
|
|
||||||
<argument type="service">
|
|
||||||
<service class="Symfony\Component\Routing\RouteCollection">
|
|
||||||
<factory service="router" method="getRouteCollection" />
|
|
||||||
</service>
|
|
||||||
</argument>
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="nelmio_api_doc.filtered_route_collection_builder" class="Nelmio\ApiDocBundle\Routing\FilteredRouteCollectionBuilder" public="false">
|
|
||||||
<argument type="collection" /> <!-- Path patterns -->
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<!-- Describers -->
|
<!-- Describers -->
|
||||||
<service id="nelmio_api_doc.describers.config" class="Nelmio\ApiDocBundle\Describer\ExternalDocDescriber" public="false">
|
<service id="nelmio_api_doc.describers.config" class="Nelmio\ApiDocBundle\Describer\ExternalDocDescriber" public="false">
|
||||||
<argument type="collection" />
|
<argument type="collection" />
|
||||||
@ -42,7 +29,7 @@
|
|||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="nelmio_api_doc.describers.route" class="Nelmio\ApiDocBundle\Describer\RouteDescriber" public="false">
|
<service id="nelmio_api_doc.describers.route" class="Nelmio\ApiDocBundle\Describer\RouteDescriber" public="false">
|
||||||
<argument type="service" id="nelmio_api_doc.filtered_route_collection" />
|
<argument type="service" id="nelmio_api_doc.routes" />
|
||||||
<argument type="service" id="nelmio_api_doc.controller_reflector" />
|
<argument type="service" id="nelmio_api_doc.controller_reflector" />
|
||||||
<argument type="collection" />
|
<argument type="collection" />
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<services>
|
<services>
|
||||||
<service id="nelmio_api_doc.describers.swagger_php" class="Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber" public="false">
|
<service id="nelmio_api_doc.describers.swagger_php" class="Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber" public="false">
|
||||||
<argument type="service" id="nelmio_api_doc.filtered_route_collection" />
|
<argument type="service" id="nelmio_api_doc.routes" />
|
||||||
<argument type="service" id="nelmio_api_doc.controller_reflector" />
|
<argument type="service" id="nelmio_api_doc.controller_reflector" />
|
||||||
<argument type="service" id="annotation_reader" />
|
<argument type="service" id="annotation_reader" />
|
||||||
|
|
||||||
|
@ -21,46 +21,5 @@ window.onload = () => {
|
|||||||
layout: 'StandaloneLayout'
|
layout: 'StandaloneLayout'
|
||||||
});
|
});
|
||||||
|
|
||||||
if (data.oauth.enabled) {
|
|
||||||
ui.initOAuth({
|
|
||||||
clientId: data.oauth.clientId,
|
|
||||||
clientSecret: data.oauth.clientSecret,
|
|
||||||
realm: data.oauth.type,
|
|
||||||
appName: data.spec.info.title,
|
|
||||||
scopeSeparator: ' ',
|
|
||||||
additionalQueryStringParams: {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
window.ui = ui;
|
window.ui = ui;
|
||||||
|
|
||||||
if (!data.operationId) return;
|
|
||||||
|
|
||||||
const observer = new MutationObserver(function (mutations, self) {
|
|
||||||
const op = document.getElementById(`operations,${data.method}-${data.path},${data.shortName}`);
|
|
||||||
if (!op) return;
|
|
||||||
|
|
||||||
self.disconnect();
|
|
||||||
|
|
||||||
op.querySelector('.opblock-summary').click();
|
|
||||||
op.querySelector('.try-out__btn').click();
|
|
||||||
|
|
||||||
if (data.id) {
|
|
||||||
const inputId = op.querySelector('.parameters input[placeholder="id"]');
|
|
||||||
inputId.value = data.id;
|
|
||||||
inputId.dispatchEvent(new Event('input', { bubbles: true }));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let input of op.querySelectorAll('.parameters input')) {
|
|
||||||
if (input.placeholder in data.queryParameters) {
|
|
||||||
input.value = data.queryParameters[input.placeholder];
|
|
||||||
input.dispatchEvent(new Event('input', { bubbles: true }));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
op.querySelector('.execute').click();
|
|
||||||
op.scrollIntoView();
|
|
||||||
});
|
|
||||||
|
|
||||||
observer.observe(document, {childList: true, subtree: true});
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user