Skip to content

Commit 1055c6f

Browse files
authored
Merge pull request #268 from bitecodes/master
add GoogleMapsPlacesFactory
2 parents a726803 + 8a50488 commit 1055c6f

File tree

5 files changed

+56
-1
lines changed

5 files changed

+56
-1
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* This file is part of the BazingaGeocoderBundle package.
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*
10+
* @license MIT License
11+
*/
12+
13+
namespace Bazinga\GeocoderBundle\ProviderFactory;
14+
15+
use Geocoder\Provider\GoogleMapsPlaces\GoogleMapsPlaces;
16+
use Geocoder\Provider\Provider;
17+
use Http\Discovery\HttpClientDiscovery;
18+
use Symfony\Component\OptionsResolver\OptionsResolver;
19+
20+
final class GoogleMapsPlacesFactory extends AbstractFactory
21+
{
22+
protected static $dependencies = [
23+
['requiredClass' => GoogleMapsPlaces::class, 'packageName' => 'geocoder-php/google-maps-places-provider'],
24+
];
25+
26+
protected function getProvider(array $config): Provider
27+
{
28+
$httplug = $config['httplug_client'] ?: HttpClientDiscovery::find();
29+
30+
return new GoogleMapsPlaces($httplug, $config['api_key']);
31+
}
32+
33+
protected static function configureOptionResolver(OptionsResolver $resolver)
34+
{
35+
$resolver->setDefaults([
36+
'httplug_client' => null,
37+
]);
38+
39+
$resolver->setAllowedTypes('httplug_client', ['object', 'null']);
40+
$resolver->setRequired(['api_key']);
41+
$resolver->setAllowedTypes('api_key', ['string']);
42+
}
43+
}

Resources/doc/services.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Here is a list of all provider factories and their options.
2121
| `Bazinga\GeocoderBundle\ProviderFactory\GeonamesFactory` | httplug_client, username
2222
| `Bazinga\GeocoderBundle\ProviderFactory\GeoPluginFactory` | httplug_client
2323
| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsFactory` | httplug_client, api_key, region
24+
| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsPlacesFactory` | httplug_client, api_key
2425
| `Bazinga\GeocoderBundle\ProviderFactory\HereFactory` | httplug_client, app_id, app_code, use_cit
2526
| `Bazinga\GeocoderBundle\ProviderFactory\HostIpFactory` | httplug_client
2627
| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory` | httplug_client

Tests/Functional/ProviderFactoryTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Geocoder\Provider\Geonames\Geonames;
2525
use Geocoder\Provider\GeoPlugin\GeoPlugin;
2626
use Geocoder\Provider\GoogleMaps\GoogleMaps;
27+
use Geocoder\Provider\GoogleMapsPlaces\GoogleMapsPlaces;
2728
use Geocoder\Provider\Here\Here;
2829
use Geocoder\Provider\HostIp\HostIp;
2930
use Geocoder\Provider\IpInfo\IpInfo;
@@ -72,6 +73,7 @@ public function getProviders()
7273
[Geonames::class, ['acme']],
7374
[GeoPlugin::class, ['empty']],
7475
[GoogleMaps::class, ['empty']],
76+
[GoogleMapsPlaces::class, ['acme']],
7577
[Here::class, ['acme']],
7678
[HostIp::class, ['empty']],
7779
[IpInfo::class, ['acme']],
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
bazinga_geocoder:
2+
profiling:
3+
enabled: false
4+
providers:
5+
acme:
6+
factory: Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsPlacesFactory
7+
options:
8+
api_key: 'bar'

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"doctrine/orm": "~2.3",
2525
"fzaninotto/faker": "^1.8",
2626
"geocoder-php/algolia-places-provider": "^0.1.1",
27-
"geocoder-php/mapbox-provider": "^1.0",
2827
"geocoder-php/arcgis-online-provider": "^4.0",
2928
"geocoder-php/bing-maps-provider": "^4.0",
3029
"geocoder-php/cache-provider": "^4.0",
@@ -34,12 +33,14 @@
3433
"geocoder-php/geoip2-provider": "^4.0",
3534
"geocoder-php/geoips-provider": "^4.0",
3635
"geocoder-php/geonames-provider": "^4.0",
36+
"geocoder-php/google-maps-places-provider": "^1.0",
3737
"geocoder-php/google-maps-provider": "^4.0",
3838
"geocoder-php/here-provider": "^0.2",
3939
"geocoder-php/host-ip-provider": "^4.0",
4040
"geocoder-php/ip-info-db-provider": "^4.0",
4141
"geocoder-php/ip-info-provider": "^0.1",
4242
"geocoder-php/ipstack-provider": "^0.1",
43+
"geocoder-php/mapbox-provider": "^1.0",
4344
"geocoder-php/mapquest-provider": "^4.0",
4445
"geocoder-php/mapzen-provider": "^4.0",
4546
"geocoder-php/maxmind-binary-provider": "^4.0",

0 commit comments

Comments
 (0)