mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-09 02:59:27 +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 Symfony\Component\Config\FileLocator;
|
||||
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\Loader\XmlFileLoader;
|
||||
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
use Nelmio\ApiDocBundle\Routing\FilteredRouteCollectionBuilder;
|
||||
|
||||
final class NelmioApiDocExtension extends Extension implements PrependExtensionInterface
|
||||
{
|
||||
@ -40,8 +44,22 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
|
||||
$loader->load('services.xml');
|
||||
|
||||
// Filter routes
|
||||
$routeCollectionBuilder = $container->getDefinition('nelmio_api_doc.filtered_route_collection_builder');
|
||||
$routeCollectionBuilder->replaceArgument(0, $config['routes']['path_patterns']);
|
||||
$routesDefinition = (new Definition(RouteCollection::class))
|
||||
->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
|
||||
$loader->load('swagger_php.xml');
|
||||
|
@ -21,19 +21,6 @@
|
||||
<argument type="service" id="controller_name_converter" />
|
||||
</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 -->
|
||||
<service id="nelmio_api_doc.describers.config" class="Nelmio\ApiDocBundle\Describer\ExternalDocDescriber" public="false">
|
||||
<argument type="collection" />
|
||||
@ -42,7 +29,7 @@
|
||||
</service>
|
||||
|
||||
<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="collection" />
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
<services>
|
||||
<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="annotation_reader" />
|
||||
|
||||
|
@ -21,46 +21,5 @@ window.onload = () => {
|
||||
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;
|
||||
|
||||
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