Skip to content

Commit 2ffd306

Browse files
authored
Merge pull request #175 from romainneutron/add-ip-info-factory
Add IpInfoFactory
2 parents 787b36a + 384bcce commit 2ffd306

File tree

5 files changed

+52
-0
lines changed

5 files changed

+52
-0
lines changed

ProviderFactory/IpInfoFactory.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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\IpInfo\IpInfo;
16+
use Geocoder\Provider\Provider;
17+
use Http\Client\HttpClient;
18+
use Http\Discovery\HttpClientDiscovery;
19+
use Symfony\Component\OptionsResolver\OptionsResolver;
20+
21+
final class IpInfoFactory extends AbstractFactory
22+
{
23+
protected static $dependencies = [
24+
['requiredClass' => IpInfo::class, 'packageName' => 'geocoder-php/ip-info-provider'],
25+
];
26+
27+
protected function getProvider(array $config): Provider
28+
{
29+
$httplug = $config['httplug_client'] ?: HttpClientDiscovery::find();
30+
31+
return new IpInfo($httplug);
32+
}
33+
34+
protected static function configureOptionResolver(OptionsResolver $resolver)
35+
{
36+
$resolver->setDefaults([
37+
'httplug_client' => null,
38+
]);
39+
40+
$resolver->setAllowedTypes('httplug_client', [HttpClient::class, 'null']);
41+
}
42+
}

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\GeoPluginFactory` | httplug_client
2222
| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsFactory` | httplug_client, api_key, region
2323
| `Bazinga\GeocoderBundle\ProviderFactory\HostIpFactory` | httplug_client
24+
| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory` | httplug_client
2425
| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoDbFactory` | httplug_client, api_key, precision
2526
| `Bazinga\GeocoderBundle\ProviderFactory\MapQuestFactory` | httplug_client, api_key, licensed
2627
| `Bazinga\GeocoderBundle\ProviderFactory\MapzenFactory` | httplug_client, api_key

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\GeoPlugin\GeoPlugin;
2525
use Geocoder\Provider\GoogleMaps\GoogleMaps;
2626
use Geocoder\Provider\HostIp\HostIp;
27+
use Geocoder\Provider\IpInfo\IpInfo;
2728
use Geocoder\Provider\IpInfoDb\IpInfoDb;
2829
use Geocoder\Provider\MapQuest\MapQuest;
2930
use Geocoder\Provider\Mapzen\Mapzen;
@@ -59,6 +60,7 @@ public function getProviders()
5960
[GeoPlugin::class, ['empty']],
6061
[GoogleMaps::class, ['empty']],
6162
[HostIp::class, ['empty']],
63+
[IpInfo::class, ['acme']],
6264
[IpInfoDb::class, ['empty', 'acme']],
6365
[MapQuest::class, ['acme']],
6466
[Mapzen::class, ['acme']],
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
bazinga_geocoder:
2+
profiling:
3+
enabled: false
4+
providers:
5+
acme:
6+
factory: Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"geocoder-php/geonames-provider": "^4.0",
4040
"geocoder-php/geoips-provider": "^4.0",
4141
"geocoder-php/geoip2-provider": "^4.0",
42+
"geocoder-php/ip-info-provider": "^0.1",
4243
"geocoder-php/ip-info-db-provider": "^4.0",
4344
"geocoder-php/host-ip-provider": "^4.0",
4445
"geocoder-php/maxmind-binary-provider": "^4.0",

0 commit comments

Comments
 (0)