Skip to content

Commit 78e1199

Browse files
jGielenNyholm
authored andcommitted
Add ipstack provider (#205)
* Add ipstack provider * updated the list of all te providers * added functional test * added Ipstack to the ProviderFactoryTest * fix broken test
1 parent e9eb75e commit 78e1199

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

ProviderFactory/IpstackFactory.php

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\Provider;
16+
use Geocoder\Provider\Ipstack\Ipstack;
17+
use Http\Discovery\HttpClientDiscovery;
18+
use Symfony\Component\OptionsResolver\OptionsResolver;
19+
20+
final class IpstackFactory extends AbstractFactory
21+
{
22+
protected static $dependencies = [
23+
['requiredClass' => Ipstack::class, 'packageName' => 'geocoder-php/ipstack-provider'],
24+
];
25+
26+
protected function getProvider(array $config): Provider
27+
{
28+
$httplug = $config['httplug_client'] ?: HttpClientDiscovery::find();
29+
30+
return new Ipstack($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->setRequired('api_key');
40+
$resolver->setAllowedTypes('httplug_client', ['object', 'null']);
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
@@ -23,6 +23,7 @@ Here is a list of all provider factories and their options.
2323
| `Bazinga\GeocoderBundle\ProviderFactory\HostIpFactory` | httplug_client
2424
| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory` | httplug_client
2525
| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoDbFactory` | httplug_client, api_key, precision
26+
| `Bazinga\GeocoderBundle\ProviderFactory\IpstackFactory` | httplug_client, api_key
2627
| `Bazinga\GeocoderBundle\ProviderFactory\MapQuestFactory` | httplug_client, api_key, licensed
2728
| `Bazinga\GeocoderBundle\ProviderFactory\MapzenFactory` | httplug_client, api_key
2829
| `Bazinga\GeocoderBundle\ProviderFactory\MaxMindBinaryFactory` | dat_file, open_flag

Tests/Functional/ProviderFactoryTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Geocoder\Provider\HostIp\HostIp;
2727
use Geocoder\Provider\IpInfo\IpInfo;
2828
use Geocoder\Provider\IpInfoDb\IpInfoDb;
29+
use Geocoder\Provider\Ipstack\Ipstack;
2930
use Geocoder\Provider\MapQuest\MapQuest;
3031
use Geocoder\Provider\Mapzen\Mapzen;
3132
use Geocoder\Provider\MaxMind\MaxMind;
@@ -68,6 +69,7 @@ public function getProviders()
6869
[HostIp::class, ['empty']],
6970
[IpInfo::class, ['acme']],
7071
[IpInfoDb::class, ['empty', 'acme']],
72+
[Ipstack::class, ['acme']],
7173
[MapQuest::class, ['acme']],
7274
[Mapzen::class, ['acme']],
7375
[MaxMind::class, ['acme']],
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
bazinga_geocoder:
2+
profiling:
3+
enabled: false
4+
providers:
5+
acme:
6+
factory: Bazinga\GeocoderBundle\ProviderFactory\IpstackFactory
7+
options:
8+
api_key: 'foo'
9+

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"geocoder-php/geoip2-provider": "^4.0",
4242
"geocoder-php/ip-info-provider": "^0.1",
4343
"geocoder-php/ip-info-db-provider": "^4.0",
44+
"geocoder-php/ipstack-provider": "^0.1",
4445
"geocoder-php/host-ip-provider": "^4.0",
4546
"geocoder-php/maxmind-binary-provider": "^4.0",
4647
"geocoder-php/yandex-provider": "^4.0",

0 commit comments

Comments
 (0)