Skip to content

Commit 964671a

Browse files
committed
Upgrade to Geocoder v3
1 parent 7d1b87c commit 964671a

19 files changed

Lines changed: 146 additions & 237 deletions

Command/GeocodeCommand.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
5353
$geocoder->using($input->getOption('provider'));
5454
}
5555

56-
$result = $geocoder->geocode($input->getArgument('address'));
57-
$data = $result->toArray();
56+
$results = $geocoder->geocode($input->getArgument('address'));
57+
$data = $results->first()->toArray();
5858

5959
$max = 0;
6060

DependencyInjection/BazingaGeocoderExtension.php

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ public function load(array $configs, ContainerBuilder $container)
5151
$container->removeDefinition('bazinga_geocoder.event_listener.fake_request');
5252
}
5353

54-
if (isset($config['adapter']['class']) && !empty($config['adapter']['class'])) {
55-
$container->setParameter('bazinga_geocoder.geocoder.adapter.class', $config['adapter']['class']);
56-
}
54+
$container->setAlias('bazinga_geocoder.geocoder.adapter', $config['adapter']);
5755

5856
if (isset($config['providers']['free_geo_ip'])) {
5957
$this->addProvider('free_geo_ip');
@@ -123,30 +121,6 @@ public function load(array $configs, ContainerBuilder $container)
123121
));
124122
}
125123

126-
if (isset($config['providers']['oiorest'])) {
127-
$this->addProvider('oiorest');
128-
}
129-
130-
if (isset($config['providers']['geocoder_ca'])) {
131-
$this->addProvider('geocoder_ca');
132-
}
133-
134-
if (isset($config['providers']['geocoder_us'])) {
135-
$this->addProvider('geocoder_us');
136-
}
137-
138-
if (isset($config['providers']['ign_openls'])) {
139-
$ignOpenlsParams = $config['providers']['ign_openls'];
140-
141-
$this->addProvider('ign_openls', array(
142-
$ignOpenlsParams['api_key'],
143-
));
144-
}
145-
146-
if (isset($config['providers']['data_science_toolkit'])) {
147-
$this->addProvider('data_science_toolkit');
148-
}
149-
150124
if (isset($config['providers']['yandex'])) {
151125
$yandexParams = $config['providers']['yandex'];
152126

@@ -239,11 +213,11 @@ public function load(array $configs, ContainerBuilder $container)
239213
if (isset($config['providers']['chain']['providers'])) {
240214
foreach ($config['providers']['chain']['providers'] as $name) {
241215
if ($this->container->hasDefinition('bazinga_geocoder.provider.'.$name)) {
242-
$chainProvider->addMethodCall('addProvider', array(
216+
$chainProvider->addMethodCall('add', array(
243217
$this->container->getDefinition('bazinga_geocoder.provider.'.$name),
244218
));
245219
} else {
246-
$chainProvider->addMethodCall('addProvider', array(new Reference($name)));
220+
$chainProvider->addMethodCall('add', array(new Reference($name)));
247221
}
248222
}
249223
}

DependencyInjection/Compiler/AddProvidersPass.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ public function process(ContainerBuilder $container)
3535
return;
3636
}
3737

38-
$array = array();
38+
$providers = array();
3939
foreach ($container->findTaggedServiceIds('bazinga_geocoder.provider') as $providerId => $attributes) {
40-
$array[] = new Reference($providerId);
40+
$providers[] = new Reference($providerId);
4141
}
4242

4343
$geocoderDefinition = $container->getDefinition('bazinga_geocoder.geocoder');
44-
$geocoderDefinition->addMethodCall('registerProviders', array($array));
44+
$geocoderDefinition->addMethodCall('registerProviders', array($providers));
4545

4646
if ($container->hasParameter('bazinga_geocoder.default_provider')) {
4747
$geocoderDefinition->addMethodCall(

DependencyInjection/Configuration.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,7 @@ public function getConfigTreeBuilder()
4646
->scalarNode('priority')->defaultValue(0)->end()
4747
->end()
4848
->end()
49-
->arrayNode('adapter')
50-
->children()
51-
->scalarNode('class')->defaultNull()->end()
52-
->end()
53-
->end()
49+
->scalarNode('adapter')->defaultValue('bazinga_geocoder.geocoder.default_adapter')->end()
5450
->arrayNode('providers')
5551
->children()
5652
->arrayNode('bing_maps')
@@ -122,17 +118,13 @@ public function getConfigTreeBuilder()
122118
->end()
123119
->end()
124120
->end()
125-
->arrayNode('oiorest')->end()
126-
->arrayNode('geocoder_ca')->end()
127-
->arrayNode('geocoder_us')->end()
128121
->arrayNode('ign_openls')
129122
->children()
130123
->scalarNode('api_key')
131124
->isRequired()->cannotBeEmpty()
132125
->end()
133126
->end()
134127
->end()
135-
->arrayNode('data_science_toolkit')->end()
136128
->arrayNode('yandex')
137129
->children()
138130
->scalarNode('locale')->defaultNull()->end()

DumperManager.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
namespace Bazinga\Bundle\GeocoderBundle;
1111

12-
use Geocoder\Dumper\DumperInterface;
12+
use Geocoder\Dumper\Dumper;
1313

1414
/**
1515
* @author Markus Bachmann <markus.bachmann@bachi.biz>
@@ -40,7 +40,7 @@ public function __construct(array $dumpers = array())
4040
*
4141
* @param string $name The name of the dumper
4242
*
43-
* @return DumperInterface
43+
* @return Dumper
4444
*
4545
* @throws \RuntimeException If no dumper was found
4646
*/
@@ -57,9 +57,9 @@ public function get($name)
5757
* Sets a dumper.
5858
*
5959
* @param string $name The name
60-
* @param DumperInterface $dumper The dumper instance
60+
* @param Dumper $dumper The dumper instance
6161
*/
62-
public function set($name, DumperInterface $dumper)
62+
public function set($name, Dumper $dumper)
6363
{
6464
$this->dumpers[$name] = $dumper;
6565
}

Geocoder/LoggableGeocoder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
*/
1010
namespace Bazinga\Bundle\GeocoderBundle\Geocoder;
1111

12-
use Geocoder\Geocoder;
1312
use Bazinga\Bundle\GeocoderBundle\Logger\GeocoderLogger;
13+
use Geocoder\ProviderAggregator;
1414

15-
class LoggableGeocoder extends Geocoder
15+
class LoggableGeocoder extends ProviderAggregator
1616
{
1717
/**
1818
* @var GeocoderLogger

Logger/GeocoderLogger.php

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
*/
1010
namespace Bazinga\Bundle\GeocoderBundle\Logger;
1111

12-
use Symfony\Component\HttpKernel\Log\LoggerInterface;
12+
use Psr\Log\LoggerInterface;
13+
use Geocoder\Model\AddressCollection;
14+
use Geocoder\Model\Address;
1315

1416
/**
1517
* @author Michal Dabrowski <dabrowski@brillante.pl>
@@ -38,23 +40,19 @@ public function __construct(LoggerInterface $logger = null)
3840
* @param string $value value to geocode
3941
* @param float $duration geocoding duration
4042
* @param string $providerClass Geocoder provider class name
41-
* @param \SplObjectStorage|Geocoded $results
43+
* @param AddressCollection $results
4244
*/
43-
public function logRequest($value, $duration, $providerClass, $results)
45+
public function logRequest($value, $duration, $providerClass, AddressCollection $results)
4446
{
4547
if (null !== $this->logger) {
4648
$this->logger->info(sprintf('%s %0.2f ms (%s)', $value, $duration, $providerClass));
4749
}
4850

4951
$data = array();
5052

51-
if ($results instanceof \SplObjectStorage) {
52-
$data = array();
53-
foreach ($results as $result) {
54-
$data[] = $result->toArray();
55-
}
56-
} else {
57-
$data = $results->toArray();
53+
/** @var Address $result */
54+
foreach ($results as $result) {
55+
$data[] = $result->toArray();
5856
}
5957

6058
$this->requests[] = array(
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@
99
*/
1010
namespace Bazinga\Bundle\GeocoderBundle\Provider;
1111

12-
use Geocoder\Geocoder;
13-
use Geocoder\Provider\ProviderInterface;
14-
use Doctrine\Common\Cache\Cache;
12+
use Doctrine\Common\Cache\Cache as DoctrineCache;
13+
use Geocoder\Provider\AbstractProvider;
14+
use Geocoder\Provider\Provider;
1515

1616
/**
1717
* @author Markus Bachmann <markus.bachmann@bachi.biz>
1818
*/
19-
class CacheProvider implements ProviderInterface
19+
class Cache extends AbstractProvider implements Provider
2020
{
2121
/**
2222
* @var Cache
2323
*/
2424
private $cache;
2525

2626
/**
27-
* @var ProviderInterface
27+
* @var Provider
2828
*/
2929
private $provider;
3030

@@ -41,18 +41,20 @@ class CacheProvider implements ProviderInterface
4141
/**
4242
* @var int
4343
*/
44-
private $maxResults = Geocoder::MAX_RESULTS;
44+
private $maxResults = Provider::MAX_RESULTS;
4545

4646
/**
4747
* Constructor.
4848
*
49-
* @param Cache $cache The cache interface
50-
* @param ProviderInterface $provider The fallback provider
49+
* @param DoctrineCache $cache The cache interface
50+
* @param Provider $provider The fallback provider
5151
* @param int $lifetime The cache lifetime
5252
* @param string $locale
5353
*/
54-
public function __construct(Cache $cache, ProviderInterface $provider, $lifetime = 0, $locale = null)
54+
public function __construct(DoctrineCache $cache, Provider $provider, $lifetime = 0, $locale = null)
5555
{
56+
parent::__construct();
57+
5658
$this->cache = $cache;
5759
$this->provider = $provider;
5860
$this->lifetime = $lifetime;
@@ -62,15 +64,15 @@ public function __construct(Cache $cache, ProviderInterface $provider, $lifetime
6264
/**
6365
* {@inheritdoc}
6466
*/
65-
public function getGeocodedData($address)
67+
public function geocode($address)
6668
{
6769
$key = 'geocoder_'.sha1($this->locale.$address);
6870

6971
if (false !== $data = $this->cache->fetch($key)) {
7072
return unserialize($data);
7173
}
7274

73-
$data = $this->provider->getGeocodedData($address);
75+
$data = $this->provider->geocode($address);
7476
$this->cache->save($key, serialize($data), $this->lifetime);
7577

7678
return $data;
@@ -79,15 +81,15 @@ public function getGeocodedData($address)
7981
/**
8082
* {@inheritdoc}
8183
*/
82-
public function getReversedData(array $coordinates)
84+
public function reverse($latitude, $longitude)
8385
{
84-
$key = 'geocoder_'.sha1($this->locale.json_encode($coordinates));
86+
$key = 'geocoder_'.sha1($this->locale.$latitude.$longitude);
8587

8688
if (false !== $data = $this->cache->fetch($key)) {
8789
return unserialize($data);
8890
}
8991

90-
$data = $this->provider->getReversedData($coordinates);
92+
$data = $this->provider->reverse($latitude, $longitude);
9193
$this->cache->save($key, serialize($data), $this->lifetime);
9294

9395
return $data;

Resources/config/services.xml

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,28 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<parameters>
7-
<parameter key="bazinga_geocoder.geocoder.class">Geocoder\Geocoder</parameter>
7+
<parameter key="bazinga_geocoder.geocoder.class">Geocoder\ProviderAggregator</parameter>
88
<parameter key="bazinga_geocoder.geocoder.loggable_class">Bazinga\Bundle\GeocoderBundle\Geocoder\LoggableGeocoder</parameter>
9-
<parameter key="bazinga_geocoder.geocoder.adapter.class">Geocoder\HttpAdapter\CurlHttpAdapter</parameter>
10-
<parameter key="bazinga_geocoder.geocoder.provider.bing_maps.class">Geocoder\Provider\BingMapsProvider</parameter>
11-
<parameter key="bazinga_geocoder.geocoder.provider.free_geo_ip.class">Geocoder\Provider\FreeGeoIpProvider</parameter>
12-
<parameter key="bazinga_geocoder.geocoder.provider.google_maps.class">Geocoder\Provider\GoogleMapsProvider</parameter>
13-
<parameter key="bazinga_geocoder.geocoder.provider.google_maps_business.class">Geocoder\Provider\GoogleMapsBusinessProvider</parameter>
14-
<parameter key="bazinga_geocoder.geocoder.provider.host_ip.class">Geocoder\Provider\HostIpProvider</parameter>
15-
<parameter key="bazinga_geocoder.geocoder.provider.ip_info_db.class">Geocoder\Provider\IpInfoDbProvider</parameter>
16-
<parameter key="bazinga_geocoder.geocoder.provider.yahoo.class">Geocoder\Provider\YahooProvider</parameter>
17-
<parameter key="bazinga_geocoder.geocoder.provider.openstreetmap.class">Geocoder\Provider\OpenStreetMapProvider</parameter>
18-
<parameter key="bazinga_geocoder.geocoder.provider.geoip.class">Geocoder\Provider\GeoipProvider</parameter>
19-
<parameter key="bazinga_geocoder.geocoder.provider.mapquest.class">Geocoder\Provider\MapQuestProvider</parameter>
20-
<parameter key="bazinga_geocoder.geocoder.provider.oiorest.class">Geocoder\Provider\OIORestProvider</parameter>
21-
<parameter key="bazinga_geocoder.geocoder.provider.geocoder_ca.class">Geocoder\Provider\GeocoderCaProvider</parameter>
22-
<parameter key="bazinga_geocoder.geocoder.provider.geocoder_us.class">Geocoder\Provider\GeocoderUsProvider</parameter>
23-
<parameter key="bazinga_geocoder.geocoder.provider.ign_openls.class">Geocoder\Provider\IGNOpenLSProvider</parameter>
24-
<parameter key="bazinga_geocoder.geocoder.provider.data_science_toolkit.class">Geocoder\Provider\DataScienceToolkitProvider</parameter>
25-
<parameter key="bazinga_geocoder.geocoder.provider.yandex.class">Geocoder\Provider\YandexProvider</parameter>
26-
<parameter key="bazinga_geocoder.geocoder.provider.geo_ips.class">Geocoder\Provider\GeoIPsProvider</parameter>
27-
<parameter key="bazinga_geocoder.geocoder.provider.geo_plugin.class">Geocoder\Provider\GeoPluginProvider</parameter>
28-
<parameter key="bazinga_geocoder.geocoder.provider.maxmind.class">Geocoder\Provider\MaxMindProvider</parameter>
29-
<parameter key="bazinga_geocoder.geocoder.provider.maxmind_binary.class">Geocoder\Provider\MaxMindBinaryProvider</parameter>
30-
<parameter key="bazinga_geocoder.geocoder.provider.opencage.class">Geocoder\Provider\OpenCageProvider</parameter>
31-
<parameter key="bazinga_geocoder.geocoder.provider.cache.class">Bazinga\Bundle\GeocoderBundle\Provider\CacheProvider</parameter>
32-
<parameter key="bazinga_geocoder.geocoder.provider.chain.class">Geocoder\Provider\ChainProvider</parameter>
33-
<parameter key="bazinga_geocoder.geocoder.provider.tom_tom.class">Geocoder\Provider\TomTomProvider</parameter>
9+
<parameter key="bazinga_geocoder.geocoder.default_adapter.class">Ivory\HttpAdapter\CurlHttpAdapter</parameter>
10+
<parameter key="bazinga_geocoder.geocoder.provider.bing_maps.class">Geocoder\Provider\BingMaps</parameter>
11+
<parameter key="bazinga_geocoder.geocoder.provider.free_geo_ip.class">Geocoder\Provider\FreeGeoIp</parameter>
12+
<parameter key="bazinga_geocoder.geocoder.provider.google_maps.class">Geocoder\Provider\GoogleMaps</parameter>
13+
<parameter key="bazinga_geocoder.geocoder.provider.google_maps_business.class">Geocoder\Provider\GoogleMapsBusiness</parameter>
14+
<parameter key="bazinga_geocoder.geocoder.provider.host_ip.class">Geocoder\Provider\HostIp</parameter>
15+
<parameter key="bazinga_geocoder.geocoder.provider.ip_info_db.class">Geocoder\Provider\IpInfoDb</parameter>
16+
<parameter key="bazinga_geocoder.geocoder.provider.yahoo.class">Geocoder\Provider\Yahoo</parameter>
17+
<parameter key="bazinga_geocoder.geocoder.provider.openstreetmap.class">Geocoder\Provider\OpenStreetMap</parameter>
18+
<parameter key="bazinga_geocoder.geocoder.provider.geoip.class">Geocoder\Provider\Geoip</parameter>
19+
<parameter key="bazinga_geocoder.geocoder.provider.mapquest.class">Geocoder\Provider\MapQuest</parameter>
20+
<parameter key="bazinga_geocoder.geocoder.provider.yandex.class">Geocoder\Provider\Yandex</parameter>
21+
<parameter key="bazinga_geocoder.geocoder.provider.geo_ips.class">Geocoder\Provider\GeoIPs</parameter>
22+
<parameter key="bazinga_geocoder.geocoder.provider.geo_plugin.class">Geocoder\Provider\GeoPlugin</parameter>
23+
<parameter key="bazinga_geocoder.geocoder.provider.maxmind.class">Geocoder\Provider\MaxMind</parameter>
24+
<parameter key="bazinga_geocoder.geocoder.provider.maxmind_binary.class">Geocoder\Provider\MaxMindBinary</parameter>
25+
<parameter key="bazinga_geocoder.geocoder.provider.opencage.class">Geocoder\Provider\OpenCage</parameter>
26+
<parameter key="bazinga_geocoder.geocoder.provider.cache.class">Bazinga\Bundle\GeocoderBundle\Provider\Cache</parameter>
27+
<parameter key="bazinga_geocoder.geocoder.provider.chain.class">Geocoder\Provider\Chain</parameter>
28+
<parameter key="bazinga_geocoder.geocoder.provider.tom_tom.class">Geocoder\Provider\TomTom</parameter>
3429

3530

3631
<parameter key="bazinga_geocoder.logger.class">Bazinga\Bundle\GeocoderBundle\Logger\GeocoderLogger</parameter>
@@ -40,19 +35,19 @@
4035
<parameter key="bazinga_geocoder.event_listener.fake_request.class">Bazinga\Bundle\GeocoderBundle\EventListener\FakeRequestListener</parameter>
4136

4237
<parameter key="bazinga_geocoder.dumper_manager.class">Bazinga\Bundle\GeocoderBundle\DumperManager</parameter>
43-
<parameter key="bazinga_geocoder.dumper.geojson.class">Geocoder\Dumper\GeoJsonDumper</parameter>
44-
<parameter key="bazinga_geocoder.dumper.gpx.class">Geocoder\Dumper\GpxDumper</parameter>
45-
<parameter key="bazinga_geocoder.dumper.kmp.class">Geocoder\Dumper\KmlDumper</parameter>
46-
<parameter key="bazinga_geocoder.dumper.wkb.class">Geocoder\Dumper\WkbDumper</parameter>
47-
<parameter key="bazinga_geocoder.dumper.wkt.class">Geocoder\Dumper\WktDumper</parameter>
38+
<parameter key="bazinga_geocoder.dumper.geojson.class">Geocoder\Dumper\GeoJson</parameter>
39+
<parameter key="bazinga_geocoder.dumper.gpx.class">Geocoder\Dumper\Gpx</parameter>
40+
<parameter key="bazinga_geocoder.dumper.kmp.class">Geocoder\Dumper\Kml</parameter>
41+
<parameter key="bazinga_geocoder.dumper.wkb.class">Geocoder\Dumper\Wkb</parameter>
42+
<parameter key="bazinga_geocoder.dumper.wkt.class">Geocoder\Dumper\Wkt</parameter>
4843
</parameters>
4944

5045
<services>
5146
<service id="geocoder" alias="bazinga_geocoder.geocoder" />
5247
<service id="bazinga_geocoder.geocoder" class="%bazinga_geocoder.geocoder.class%" />
5348

5449
<!-- Adapters -->
55-
<service id="bazinga_geocoder.geocoder.adapter" class="%bazinga_geocoder.geocoder.adapter.class%" public="false" />
50+
<service id="bazinga_geocoder.geocoder.default_adapter" class="%bazinga_geocoder.geocoder.default_adapter.class%" public="false" />
5651

5752
<!-- Dumpers -->
5853
<service id="bazinga_geocoder.dumper_manager" class="%bazinga_geocoder.dumper_manager.class%">

Resources/doc/index.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,6 @@ bazinga_geocoder:
276276
free_geo_ip: []
277277
mapquest:
278278
api_key: ~ # Required
279-
oiorest: []
280-
geocoder_ca: []
281-
geocoder_us: []
282-
ign_openls:
283-
api_key: ~ # Required
284279
data_science_toolkit: []
285280
yandex:
286281
locale: null

0 commit comments

Comments
 (0)