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

GoogleMapsFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getProvider() 0 6 2
A configureOptionResolver() 0 12 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