diff --git a/ProviderFactory/AlgoliaPlacesFactory.php b/ProviderFactory/AlgoliaPlacesFactory.php new file mode 100644 index 00000000..0a681feb --- /dev/null +++ b/ProviderFactory/AlgoliaPlacesFactory.php @@ -0,0 +1,45 @@ + AlgoliaPlaces::class, 'packageName' => 'geocoder-php/algolia-place-provider'], + ]; + + protected function getProvider(array $config): Provider + { + $httplug = $config['httplug_client'] ?: HttpClientDiscovery::find(); + + return new AlgoliaPlaces($httplug, $config['apiKey'], $config['appId']); + } + + protected static function configureOptionResolver(OptionsResolver $resolver) + { + $resolver->setDefaults([ + 'httplug_client' => null, + 'apiKey' => null, + 'appId' => null, + ]); + + $resolver->setAllowedTypes('httplug_client', ['object', 'null']); + $resolver->setAllowedTypes('apiKey', ['string']); + $resolver->setAllowedTypes('appId', ['string']); + } +} diff --git a/Resources/doc/services.md b/Resources/doc/services.md index 788f505c..170b05cc 100644 --- a/Resources/doc/services.md +++ b/Resources/doc/services.md @@ -10,6 +10,7 @@ Here is a list of all provider factories and their options. | Service | Options | | ------- | ------- | +| `Bazinga\GeocoderBundle\ProviderFactory\AlgoliaPlaceFactory` | httplug_client, apiKey, appId | `Bazinga\GeocoderBundle\ProviderFactory\ArcGISOnlineFactory` | httplug_client, source_country | `Bazinga\GeocoderBundle\ProviderFactory\BingMapsFactory` | httplug_client, api_key | `Bazinga\GeocoderBundle\ProviderFactory\ChainFactory` | services diff --git a/composer.json b/composer.json index 9e5cf854..ec2ae4e1 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,8 @@ "geocoder-php/plugin": "^1.0", "symfony/framework-bundle": "^3.3 || ^4.0", "symfony/options-resolver": "^3.3 || ^4.0", - "symfony/console": "^3.3 || ^4.0" + "symfony/console": "^3.3 || ^4.0", + "geocoder-php/algolia-places-provider": "^0.1.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.4 || ^4.0",