Configuration   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 0
dl 0
loc 66
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getConfigTreeBuilder() 0 10 1
A buildIncludedAttributesNode() 0 10 1
A buildViewClassesNode() 0 38 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sylius\ShopApiPlugin\DependencyInjection;
6
7
use Sylius\ShopApiPlugin\View;
8
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
9
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
10
use Symfony\Component\Config\Definition\ConfigurationInterface;
11
12
final class Configuration implements ConfigurationInterface
13
{
14
    /**
15
     * {@inheritdoc}
16
     */
17
    public function getConfigTreeBuilder()
18
    {
19
        $treeBuilder = new TreeBuilder();
20
        $rootNode = $treeBuilder->root('shop_api');
21
22
        $this->buildIncludedAttributesNode($rootNode);
23
        $this->buildViewClassesNode($rootNode);
24
25
        return $treeBuilder;
26
    }
27
28
    private function buildIncludedAttributesNode(ArrayNodeDefinition $rootNode): void
29
    {
30
        $rootNode
31
            ->children()
32
                ->arrayNode('included_attributes')
33
                    ->prototype('scalar')->end()
34
                ->end()
35
            ->end()
36
        ;
37
    }
38
39
    private function buildViewClassesNode(ArrayNodeDefinition $rootNode): void
40
    {
41
        $rootNode
42
            ->addDefaultsIfNotSet()
43
            ->children()
44
                ->arrayNode('view_classes')
45
                    ->addDefaultsIfNotSet()
46
                    ->children()
47
                        ->scalarNode('address')->defaultValue(View\AddressView::class)->end()
48
                        ->scalarNode('adjustment')->defaultValue(View\AdjustmentView::class)->end()
49
                        ->scalarNode('cart_item')->defaultValue(View\ItemView::class)->end()
50
                        ->scalarNode('cart_summary')->defaultValue(View\CartSummaryView::class)->end()
51
                        ->scalarNode('customer')->defaultValue(View\CustomerView::class)->end()
52
                        ->scalarNode('estimated_shipping_cost')->defaultValue(View\EstimatedShippingCostView::class)->end()
53
                        ->scalarNode('image')->defaultValue(View\ImageView::class)->end()
54
                        ->scalarNode('page')->defaultValue(View\PageView::class)->end()
55
                        ->scalarNode('page_links')->defaultValue(View\PageLinksView::class)->end()
56
                        ->scalarNode('payment')->defaultValue(View\PaymentView::class)->end()
57
                        ->scalarNode('payment_method')->defaultValue(View\PaymentMethodView::class)->end()
58
                        ->scalarNode('price')->defaultValue(View\PriceView::class)->end()
59
                        ->scalarNode('product')->defaultValue(View\ProductView::class)->end()
60
                        ->scalarNode('product_attribute_value')->defaultValue(View\ProductAttributeValueView::class)->end()
61
                        ->scalarNode('product_review')->defaultValue(View\ProductReviewView::class)->end()
62
                        ->scalarNode('product_taxon')->defaultValue(View\ProductTaxonView::class)->end()
63
                        ->scalarNode('product_variant')->defaultValue(View\ProductVariantView::class)->end()
64
                        ->scalarNode('shipment')->defaultValue(View\ShipmentView::class)->end()
65
                        ->scalarNode('shipping_method')->defaultValue(View\ShippingMethodView::class)->end()
66
                        ->scalarNode('taxon')->defaultValue(View\TaxonView::class)->end()
67
                        ->scalarNode('taxon_details')->defaultValue(View\TaxonDetailsView::class)->end()
68
                        ->scalarNode('totals')->defaultValue(View\TotalsView::class)->end()
69
                        ->scalarNode('validation_error')->defaultValue(View\ValidationErrorView::class)->end()
70
                        ->scalarNode('variant_option')->defaultValue(View\VariantOptionView::class)->end()
71
                        ->scalarNode('variant_option_value')->defaultValue(View\VariantOptionValueView::class)->end()
72
                    ->end()
73
                ->end()
74
            ->end()
75
        ;
76
    }
77
}
78