GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

ApiHelperBuilder::createSubscribers()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 74
Code Lines 48

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 51
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 74
ccs 51
cts 51
cp 1
rs 9.0335
c 0
b 0
f 0
cc 1
eloc 48
nc 1
nop 0
crap 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/*
4
 * This file is part of the Ivory Google Map package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\GoogleMap\Helper\Builder;
13
14
use Ivory\GoogleMap\Helper\ApiHelper;
15
use Ivory\GoogleMap\Helper\Collector\Layer\HeatmapLayerCollector;
16
use Ivory\GoogleMap\Helper\Collector\Overlay\EncodedPolylineCollector;
17
use Ivory\GoogleMap\Helper\Collector\Overlay\InfoBoxCollector;
18
use Ivory\GoogleMap\Helper\Collector\Overlay\MarkerCollector;
19
use Ivory\GoogleMap\Helper\Formatter\Formatter;
20
use Ivory\GoogleMap\Helper\Renderer\ApiInitRenderer;
21
use Ivory\GoogleMap\Helper\Renderer\ApiRenderer;
22
use Ivory\GoogleMap\Helper\Renderer\Control\ControlManagerRenderer;
23
use Ivory\GoogleMap\Helper\Renderer\Geometry\EncodingRenderer;
24
use Ivory\GoogleMap\Helper\Renderer\Html\JavascriptTagRenderer;
25
use Ivory\GoogleMap\Helper\Renderer\Html\TagRenderer;
26
use Ivory\GoogleMap\Helper\Renderer\Layer\HeatmapLayerRenderer;
27
use Ivory\GoogleMap\Helper\Renderer\LoaderRenderer;
28
use Ivory\GoogleMap\Helper\Renderer\MapRenderer;
29
use Ivory\GoogleMap\Helper\Renderer\MapTypeIdRenderer;
30
use Ivory\GoogleMap\Helper\Renderer\Overlay\EncodedPolylineRenderer;
31
use Ivory\GoogleMap\Helper\Renderer\Overlay\InfoBoxRenderer;
32
use Ivory\GoogleMap\Helper\Renderer\Overlay\MarkerClustererRenderer;
33
use Ivory\GoogleMap\Helper\Renderer\Place\AutocompleteRenderer;
34
use Ivory\GoogleMap\Helper\Renderer\Utility\CallbackRenderer;
35
use Ivory\GoogleMap\Helper\Renderer\Utility\RequirementLoaderRenderer;
36
use Ivory\GoogleMap\Helper\Renderer\Utility\RequirementRenderer;
37
use Ivory\GoogleMap\Helper\Renderer\Utility\SourceRenderer;
38
use Ivory\GoogleMap\Helper\Subscriber\ApiJavascriptSubscriber;
39
use Ivory\GoogleMap\Helper\Subscriber\Layer\HeatmapLayerSubscriber;
40
use Ivory\GoogleMap\Helper\Subscriber\MapJavascriptSubscriber;
41
use Ivory\GoogleMap\Helper\Subscriber\Overlay\EncodedPolylineSubscriber;
42
use Ivory\GoogleMap\Helper\Subscriber\Overlay\InfoBoxSubscriber;
43
use Ivory\GoogleMap\Helper\Subscriber\Overlay\MarkerClustererSubscriber;
44
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteJavascriptSubscriber;
45
use Ivory\JsonBuilder\JsonBuilder;
46
47
/**
48
 * @author GeLo <[email protected]>
49
 */
50
class ApiHelperBuilder extends AbstractJavascriptHelperBuilder
51
{
52
    /**
53
     * @var string
54
     */
55
    private $language;
56
57
    /**
58
     * @var string|null
59
     */
60
    private $key;
61
62
    /**
63
     * @param Formatter|null   $formatter
64
     * @param JsonBuilder|null $jsonBuilder
65
     * @param string           $language
66
     * @param string|null      $key
67
     */
68 280
    public function __construct(
69
        Formatter $formatter = null,
70
        JsonBuilder $jsonBuilder = null,
71
        $language = 'en',
72
        $key = null
0 ignored issues
show
Unused Code introduced by
The parameter $key is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
73
    ) {
74 280
        parent::__construct($formatter, $jsonBuilder);
75
76 280
        $this->setLanguage($language);
77 280
    }
78
79
    /**
80
     * @return string
81
     */
82 8
    public function getLanguage()
83
    {
84 8
        return $this->language;
85
    }
86
87
    /**
88
     * @param string $language
89
     *
90
     * @return $this
91
     */
92 280
    public function setLanguage($language)
93
    {
94 280
        $this->language = $language;
95
96 280
        return $this;
97
    }
98
99
    /**
100
     * @return bool
101
     */
102 8
    public function hasKey()
103
    {
104 8
        return $this->key !== null;
105
    }
106
107
    /**
108
     * @return string|null
109
     */
110 8
    public function getKey()
111
    {
112 8
        return $this->key;
113
    }
114
115
    /**
116
     * @param string|null $key
117
     *
118
     * @return $this
119
     */
120 4
    public function setKey($key)
121 2
    {
122 4
        $this->key = $key;
123
124 4
        return $this;
125
    }
126
127
    /**
128
     * @return ApiHelper
129
     */
130 264
    public function build()
131
    {
132 264
        return new ApiHelper($this->createEventDispatcher());
133
    }
134
135
    /**
136
     * {@inheritdoc}
137
     */
138 264
    protected function createSubscribers()
139
    {
140 264
        $formatter = $this->getFormatter();
141 264
        $jsonBuilder = $this->getJsonBuilder();
142
143
        // Layer collectors
144 264
        $heatmapLayerCollector = new HeatmapLayerCollector();
145
146
        // Overlay collectors
147 264
        $encodedPolylineCollector = new EncodedPolylineCollector();
148 264
        $markerCollector = new MarkerCollector();
149 264
        $infoBoxCollector = new InfoBoxCollector($markerCollector);
150
151
        // Control renderers
152 264
        $controlManagerRenderer = new ControlManagerRenderer();
153
154
        // Layer renderers
155 264
        $heatmapLayerRenderer = new HeatmapLayerRenderer($formatter, $jsonBuilder);
156
157
        // Utility renderers
158 264
        $callbackRenderer = new CallbackRenderer($formatter);
159 264
        $loaderRenderer = new LoaderRenderer($formatter, $jsonBuilder, $this->language, $this->key);
160 264
        $requirementLoaderRenderer = new RequirementLoaderRenderer($formatter);
161 264
        $requirementRenderer = new RequirementRenderer($formatter);
162 264
        $sourceRenderer = new SourceRenderer($formatter);
163
164
        // Map renderers
165 264
        $mapTypeIdRenderer = new MapTypeIdRenderer($formatter);
166 264
        $mapRenderer = new MapRenderer(
167 198
            $formatter,
168 198
            $jsonBuilder,
169 198
            $mapTypeIdRenderer,
170 198
            $controlManagerRenderer,
171 66
            $requirementRenderer
172 132
        );
173
174
        // Overlay renderers
175 264
        $encodingRenderer = new EncodingRenderer($formatter);
176 264
        $encodedPolylineRenderer = new EncodedPolylineRenderer($formatter, $jsonBuilder, $encodingRenderer);
177 264
        $infoBoxRenderer = new InfoBoxRenderer($formatter, $jsonBuilder, $requirementRenderer);
178 264
        $markerClustererRenderer = new MarkerClustererRenderer($formatter, $jsonBuilder, $requirementRenderer);
179
180
        // Place renderers
181 264
        $autocompleteRenderer = new AutocompleteRenderer($formatter, $jsonBuilder, $requirementRenderer);
182
183
        // Html renderers
184 264
        $tagRenderer = new TagRenderer($formatter);
185 264
        $javascriptTagRenderer = new JavascriptTagRenderer($formatter, $tagRenderer);
186
187
        // Api renderers
188 264
        $apiInitRenderer = new ApiInitRenderer($formatter);
189 264
        $apiRenderer = new ApiRenderer(
190 198
            $formatter,
191 198
            $apiInitRenderer,
192 198
            $loaderRenderer,
193 198
            $requirementLoaderRenderer,
194 66
            $sourceRenderer
195 132
        );
196
197 264
        return array_merge([
198 264
            new ApiJavascriptSubscriber($formatter, $apiRenderer, $javascriptTagRenderer),
199 264
            new AutocompleteJavascriptSubscriber(
200 198
                $formatter,
201 198
                $autocompleteRenderer,
202 198
                $callbackRenderer,
203 66
                $javascriptTagRenderer
204 132
            ),
205 264
            new EncodedPolylineSubscriber($formatter, $encodedPolylineCollector, $encodedPolylineRenderer),
206 264
            new HeatmapLayerSubscriber($formatter, $heatmapLayerCollector, $heatmapLayerRenderer),
207 264
            new InfoBoxSubscriber($formatter, $infoBoxCollector, $infoBoxRenderer),
208 264
            new MapJavascriptSubscriber($formatter, $mapRenderer, $callbackRenderer, $javascriptTagRenderer),
209 264
            new MarkerClustererSubscriber($formatter, $markerClustererRenderer),
210 264
        ], parent::createSubscribers());
211
    }
212
}
213