Completed
Push — master ( 709dbb...f12a68 )
by Tobias
09:11
created

GoogleMapsFactory::getProvider()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 1
1
<?php
2
3
/*
4
 * This file is part of the BazingaGeocoderBundle package.
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 *
8
 * @license    MIT License
9
 */
10
11
namespace Bazinga\GeocoderBundle\ProviderFactory;
12
13
use Geocoder\Provider\GoogleMaps\GoogleMaps;
14
use Http\Client\HttpClient;
15
use Http\Discovery\HttpClientDiscovery;
16
use Symfony\Component\OptionsResolver\OptionsResolver;
17
18
final class GoogleMapsFactory extends AbstractFactory
19
{
20
    protected static $dependencies = [
21
        ['requiredClass' => GoogleMaps::class, 'packageName' => 'geocoder-php/google-maps-provider'],
22
    ];
23
24
    protected function getProvider(array $config)
25
    {
26
        $httplug = $config['httplug_client'] ?: HttpClientDiscovery::find();
27
28
        return new GoogleMaps($httplug, $config['region'], $config['api_key']);
29
    }
30
31
    protected static function configureOptionResolver(OptionsResolver $resolver)
32
    {
33
        $resolver->setDefaults([
34
            'httplug_client' => null,
35
            'region' => null,
36
            'api_key' => null,
37
        ]);
38
39
        $resolver->setAllowedTypes('httplug_client', [HttpClient::class, 'null']);
40
        $resolver->setAllowedTypes('region', ['string', 'null']);
41
        $resolver->setAllowedTypes('api_key', ['string', 'null']);
42
    }
43
}
44