Passed
Push — master ( 442a9a...3948f8 )
by Dāvis
05:23
created

Captcha/Configurator/ReCaptchaConfigurator.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Sludio\HelperBundle\Captcha\Configurator;
4
5
use Symfony\Component\Config\Definition\Builder\NodeBuilder;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\DependencyInjection\Reference;
8
use Sludio\HelperBundle\Captcha\Validator\Constraint\IsTrueValidator;
9
use Sludio\HelperBundle\Captcha\Form\Type\RecaptchaType;
10
use Sludio\HelperBundle\Captcha\Router\LocaleResolver;
11
12
class ReCaptchaConfigurator implements CaptchaConfiguratorInterface
13
{
14
15
    public function buildConfiguration(NodeBuilder $node)
16
    {
17
        // @formatter:off
18
        $node
19
            ->scalarNode('public_key')->isRequired()->cannotBeEmpty()->end()
20
            ->scalarNode('private_key')->isRequired()->cannotBeEmpty()->end()
0 ignored issues
show
The method scalarNode() does not exist on Symfony\Component\Config...der\NodeParentInterface. It seems like you code against a sub-type of Symfony\Component\Config...der\NodeParentInterface such as Symfony\Component\Config...ion\Builder\NodeBuilder. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

20
            ->/** @scrutinizer ignore-call */ scalarNode('private_key')->isRequired()->cannotBeEmpty()->end()
Loading history...
21
            ->booleanNode('verify_host')->defaultValue(false)->end()
22
            ->booleanNode('ajax')->defaultValue(false)->end()
23
            ->scalarNode('locale_key')->defaultValue('en')->end()
24
            ->scalarNode('template')->defaultValue('SludioHelperBundle:Captcha:sludio_helper_captcha_recaptcha_widget.html.twig')->end()
25
            ->scalarNode('resolver_class')->defaultValue(LocaleResolver::class)->end()
26
            ->scalarNode('type_class')->defaultValue(RecaptchaType::class)->end()
27
            ->scalarNode('validator_class')->defaultValue(IsTrueValidator::class)->end()
28
            ->scalarNode('validate')->defaultValue(true)->end()
29
            ->arrayNode('locales')
30
                ->requiresAtLeastOneElement()
31
                ->beforeNormalization()
32
                    ->ifString()
33
                        ->then(function($v) {
34
                            return preg_split('/\s*,\s*/', $v);
35
                        })
36
                    ->end()
37
                ->prototype('scalar')->end()
38
            ->end()
39
            ->arrayNode('http_proxy')
40
                ->addDefaultsIfNotSet()
41
                ->children()
42
                    ->scalarNode('host')->defaultValue(null)->end()
43
                    ->scalarNode('port')->defaultValue(null)->end()
44
                    ->scalarNode('auth')->defaultValue(null)->end()
45
                ->end()
46
            ->end()
47
            ->arrayNode('options')
48
                ->addDefaultsIfNotSet()
49
                ->children()
50
                    ->booleanNode('compound')->defaultValue(false)->end()
51
                    ->scalarNode('url_challenge')->defaultValue(null)->end()
52
                    ->scalarNode('url_noscript')->defaultValue(null)->end()
53
                    ->scalarNode('theme')->defaultValue('light')->end()
54
                    ->scalarNode('type')->defaultValue('image')->end()
55
                    ->scalarNode('size')->defaultValue('normal')->end()
56
                    ->scalarNode('callback')->defaultValue(null)->end()
57
                    ->scalarNode('expiredDallback')->defaultValue(null)->end()
58
                    ->booleanNode('defer')->defaultValue(false)->end()
59
                    ->booleanNode('async')->defaultValue(false)->end()
60
                ->end()
61
            ->end()
62
        ;
63
        // @formatter:on
64
    }
65
66
    public function configureClient(ContainerBuilder $container, $clientServiceKey, array $options = [])
67
    {
68
        /* RESOLVER */
69
        $resolver = $clientServiceKey.'.resolver';
70
        $resolverClass = $container->getParameter($clientServiceKey.'.resolver_class');
71
72
        $resolverDefinition = $container->register($resolver, $resolverClass);
73
        $resolverDefinition->setPublic(false);
74
        $resolverDefinition->setArguments([
75
            $container->getParameter($clientServiceKey.'.locale_key'),
76
            new Reference('request_stack'),
77
            $container->getParameter($clientServiceKey.'.locales'),
78
        ]);
79
        /* TYPE */
80
        $type = $clientServiceKey.'.form.type';
81
        $typeClass = $container->getParameter($clientServiceKey.'.type_class');
82
        $typeDefinition = $container->register($type, $typeClass);
83
        $typeDefinition->setArguments([
84
            $container->getParameter($clientServiceKey.'.public_key'),
85
            $container->getParameter($clientServiceKey.'.ajax'),
86
            $container->getDefinition($resolver),
87
            $container->getParameter($clientServiceKey.'.options'),
88
        ]);
89
        $typeDefinition->addTag('form.type');
90
        /* VALIDATOR */
91
        $validator = $clientServiceKey.'.validator.true';
92
        $validatorClass = $container->getParameter($clientServiceKey.'.validator_class');
93
        $validatorDefinition = $container->register($validator, $validatorClass);
94
        $validatorDefinition->setArguments([
95
            $container->getParameter($clientServiceKey.'.private_key'),
96
            $container->getParameter($clientServiceKey.'.http_proxy'),
97
            $container->getParameter($clientServiceKey.'.verify_host'),
98
            new Reference('request_stack'),
99
            $container->getParameter($clientServiceKey.'.validate'),
100
        ]);
101
        $validatorDefinition->addTag('validator.constraint_validator');
102
    }
103
}
104