Skip to content

Commit bfe1202

Browse files
authored
Merge pull request #329 from bezin/add-ors-factory
Add OpenRouteService factory
2 parents 9053a03 + 9b1aceb commit bfe1202

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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\OpenRouteService\OpenRouteService;
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 OpenRouteServiceFactory extends AbstractFactory
22+
{
23+
protected static $dependencies = [
24+
['requiredClass' => OpenRouteService::class, 'packageName' => 'geocoder-php/openrouteservice-provider'],
25+
];
26+
27+
/**
28+
* @phpstan-param array{api_key: string, httplug_client: ?HttpClient} $config
29+
*/
30+
protected function getProvider(array $config): Provider
31+
{
32+
$httplug = $config['httplug_client'] ?: HttpClientDiscovery::find();
33+
34+
return new OpenRouteService($httplug, $config['api_key']);
35+
}
36+
37+
protected static function configureOptionResolver(OptionsResolver $resolver)
38+
{
39+
$resolver->setDefaults([
40+
'httplug_client' => null,
41+
'api_key' => null,
42+
]);
43+
44+
$resolver->setRequired('api_key');
45+
$resolver->setAllowedTypes('httplug_client', [HttpClient::class, 'null']);
46+
$resolver->setAllowedTypes('api_key', ['string']);
47+
}
48+
}

Resources/doc/services.md

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Here is a list of all provider factories and their options.
3535
| `Bazinga\GeocoderBundle\ProviderFactory\MaxMindFactory` | httplug_client, api_key, endpoint
3636
| `Bazinga\GeocoderBundle\ProviderFactory\NominatimFactory` | httplug_client, root_url
3737
| `Bazinga\GeocoderBundle\ProviderFactory\OpenCageFactory` | httplug_client, api_key
38+
| `Bazinga\GeocoderBundle\ProviderFactory\OpenRouteServiceFactory` | httplug_client, api_key
3839
| `Bazinga\GeocoderBundle\ProviderFactory\PickPointFactory` | httplug_client, api_key
3940
| `Bazinga\GeocoderBundle\ProviderFactory\TomTomFactory` | httplug_client, api_key
4041
| `Bazinga\GeocoderBundle\ProviderFactory\YandexFactory` | httplug_client, toponym

composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"geocoder-php/maxmind-provider": "^4.3",
4949
"geocoder-php/nominatim-provider": "^5.4",
5050
"geocoder-php/open-cage-provider": "^4.5",
51+
"geocoder-php/openrouteservice-provider": "^1.2",
5152
"geocoder-php/pickpoint-provider": "^4.2",
5253
"geocoder-php/tomtom-provider": "^4.2",
5354
"geocoder-php/yandex-provider": "^4.4",

0 commit comments

Comments
 (0)