vendor/nelmio/api-doc-bundle/Nelmio/ApiDocBundle/DependencyInjection/Configuration.php line 23

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the NelmioApiDocBundle.
  4.  *
  5.  * (c) Nelmio <hello@nelm.io>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Nelmio\ApiDocBundle\DependencyInjection;
  11. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  12. use Symfony\Component\Config\Definition\ConfigurationInterface;
  13. class Configuration implements ConfigurationInterface
  14. {
  15.     public function getConfigTreeBuilder()
  16.     {
  17.         $treeBuilder = new TreeBuilder();
  18.         $treeBuilder
  19.             ->root('nelmio_api_doc')
  20.             ->children()
  21.                 ->scalarNode('name')->defaultValue('API documentation')->end()
  22.                 ->arrayNode('exclude_sections')
  23.                     ->prototype('scalar')
  24.                     ->end()
  25.                 ->end()
  26.                 ->booleanNode('default_sections_opened')->defaultTrue()->end()
  27.                 ->arrayNode('motd')
  28.                     ->addDefaultsIfNotSet()
  29.                     ->children()
  30.                         ->scalarNode('template')->defaultValue('@NelmioApiDoc/Components/motd.html.twig')->end()
  31.                     ->end()
  32.                 ->end()
  33.                 ->arrayNode('request_listener')
  34.                     ->beforeNormalization()
  35.                         ->ifTrue(function ($a) { return is_bool($a); })
  36.                         ->then(function ($a) { return array('enabled' => $a); })
  37.                     ->end()
  38.                     ->addDefaultsIfNotSet()
  39.                     ->children()
  40.                         ->booleanNode('enabled')->defaultTrue()->end()
  41.                         ->scalarNode('parameter')->defaultValue('_doc')->end()
  42.                     ->end()
  43.                 ->end()
  44.                 ->arrayNode('sandbox')
  45.                     ->addDefaultsIfNotSet()
  46.                     ->children()
  47.                         ->scalarNode('enabled')->defaultTrue()->end()
  48.                         ->scalarNode('endpoint')->defaultNull()->end()
  49.                         ->scalarNode('accept_type')->defaultNull()->end()
  50.                         ->arrayNode('body_format')
  51.                             ->addDefaultsIfNotSet()
  52.                             ->beforeNormalization()
  53.                                 ->ifString()
  54.                                 ->then(function ($v) { return array('default_format' => $v); })
  55.                             ->end()
  56.                             ->children()
  57.                                 ->arrayNode('formats')
  58.                                     ->defaultValue(array('form''json'))
  59.                                     ->prototype('scalar')->end()
  60.                                 ->end()
  61.                                 ->enumNode('default_format')
  62.                                     ->values(array('form''json'))
  63.                                     ->defaultValue('form')
  64.                                 ->end()
  65.                             ->end()
  66.                         ->end()
  67.                         ->arrayNode('request_format')
  68.                             ->addDefaultsIfNotSet()
  69.                             ->children()
  70.                                 ->arrayNode('formats')
  71.                                     ->defaultValue(array(
  72.                                         'json' => 'application/json',
  73.                                         'xml' => 'application/xml'
  74.                                     ))
  75.                                     ->prototype('scalar')->end()
  76.                                 ->end()
  77.                                 ->enumNode('method')
  78.                                     ->values(array('format_param''accept_header'))
  79.                                     ->defaultValue('format_param')
  80.                                 ->end()
  81.                                 ->scalarNode('default_format')->defaultValue('json')->end()
  82.                             ->end()
  83.                         ->end()
  84.                         ->arrayNode('authentication')
  85.                             ->children()
  86.                                 ->scalarNode('delivery')
  87.                                     ->isRequired()
  88.                                     ->validate()
  89.                                         ->ifNotInArray(array('query''http''header'))
  90.                                         ->thenInvalid("Unknown authentication delivery type '%s'.")
  91.                                     ->end()
  92.                                 ->end()
  93.                                 ->scalarNode('name')->isRequired()->end()
  94.                                 ->enumNode('type')
  95.                                     ->info('Required if http delivery is selected.')
  96.                                     ->values(array('basic''bearer'))
  97.                                 ->end()
  98.                                 ->booleanNode('custom_endpoint')->defaultFalse()->end()
  99.                             ->end()
  100.                             ->validate()
  101.                                 ->ifTrue(function ($v) {
  102.                                     return 'http' === $v['delivery'] && !$v['type'] ;
  103.                                 })
  104.                                 ->thenInvalid('"type" is required when using http delivery.')
  105.                             ->end()
  106.                             # http_basic BC
  107.                             ->beforeNormalization()
  108.                                 ->ifTrue(function ($v) {
  109.                                     return 'http_basic' === $v['delivery'];
  110.                                 })
  111.                                 ->then(function ($v) {
  112.                                     $v['delivery'] = 'http';
  113.                                     $v['type'] = 'basic';
  114.                                     return $v;
  115.                                 })
  116.                             ->end()
  117.                             ->beforeNormalization()
  118.                                 ->ifTrue(function ($v) {
  119.                                     return 'http' === $v['delivery'];
  120.                                 })
  121.                                 ->then(function ($v) {
  122.                                     if ('http' === $v['delivery'] && !isset($v['name'])) {
  123.                                         $v['name'] = 'Authorization';
  124.                                     }
  125.                                     return $v;
  126.                                 })
  127.                             ->end()
  128.                         ->end()
  129.                         ->booleanNode('entity_to_choice')->defaultTrue()->end()
  130.                     ->end()
  131.                 ->end()
  132.                 ->arrayNode('swagger')
  133.                     ->addDefaultsIfNotSet()
  134.                     ->children()
  135.                         ->scalarNode('model_naming_strategy')->defaultValue('dot_notation')->end()
  136.                         ->scalarNode('api_base_path')->defaultValue('/api')->end()
  137.                         ->scalarNode('swagger_version')->defaultValue('1.2')->end()
  138.                         ->scalarNode('api_version')->defaultValue('0.1')->end()
  139.                         ->arrayNode('info')
  140.                             ->addDefaultsIfNotSet()
  141.                                 ->children()
  142.                                     ->scalarNode('title')->defaultValue('Symfony2')->end()
  143.                                     ->scalarNode('description')->defaultValue('My awesome Symfony2 app!')->end()
  144.                                     ->scalarNode('TermsOfServiceUrl')->defaultNull()->end()
  145.                                     ->scalarNode('contact')->defaultNull()->end()
  146.                                     ->scalarNode('license')->defaultNull()->end()
  147.                                     ->scalarNode('licenseUrl')->defaultNull()->end()
  148.                                 ->end()
  149.                         ->end()
  150.                     ->end()
  151.                 ->end()
  152.                 ->arrayNode('cache')
  153.                     ->addDefaultsIfNotSet()
  154.                     ->children()
  155.                         ->booleanNode('enabled')->defaultFalse()->end()
  156.                         ->scalarNode('file')->defaultValue('%kernel.cache_dir%/api-doc.cache')->end()
  157.                     ->end()
  158.                 ->end()
  159.             ->end();
  160.         return $treeBuilder;
  161.     }
  162. }