Skip to content

Conversation

@norkunas
Copy link
Member

@norkunas norkunas commented Dec 11, 2025

Summary by CodeRabbit

Release Notes

  • Refactor

    • Removed deprecated httplug_client configuration option support across all geocoding providers. Users must update configurations to use http_client instead.
  • Documentation

    • Updated HTTP client configuration guides with PSR-18 implementation examples and composer installation commands for Symfony and Guzzle.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 11, 2025

Walkthrough

Systematic deprecation removal: HTTPlug-based httplug_client configuration option is completely eliminated across 23 provider factories, replaced with PSR-18-based http_client. Documentation updated to reflect new HTTP client configuration guidance; legacy test removed.

Changes

Cohort / File(s) Summary
Documentation
doc/index.md, doc/services.md
Updated HTTP client configuration guidance from HTTPlug to PSR-18 approach; replaced httplug_client with http_client in example configurations and factory documentation; removed Doctrine test documentation.
Provider Factories
src/ProviderFactory/AlgoliaPlaceFactory.php, src/ProviderFactory/ArcGISOnlineFactory.php, src/ProviderFactory/BingMapsFactory.php, src/ProviderFactory/FreeGeoIpFactory.php, src/ProviderFactory/GeoPluginFactory.php, src/ProviderFactory/GeonamesFactory.php, src/ProviderFactory/GoogleMapsFactory.php, src/ProviderFactory/GoogleMapsPlacesFactory.php, src/ProviderFactory/HereFactory.php, src/ProviderFactory/HostIpFactory.php, src/ProviderFactory/IpInfoFactory.php, src/ProviderFactory/IpInfoDbFactory.php, src/ProviderFactory/IpstackFactory.php, src/ProviderFactory/LocationIQFactory.php, src/ProviderFactory/MapboxFactory.php, src/ProviderFactory/MapQuestFactory.php, src/ProviderFactory/MaxMindFactory.php, src/ProviderFactory/NominatimFactory.php, src/ProviderFactory/OpenCageFactory.php, src/ProviderFactory/OpenRouteServiceFactory.php, src/ProviderFactory/PickPointFactory.php, src/ProviderFactory/TomTomFactory.php, src/ProviderFactory/YandexFactory.php
Removed deprecated httplug_client option and fallback paths across all factories. Simplified HTTP client resolution to prioritize http_client config option, then factory default, then PSR-18 discovery. Removed httplug_client defaults, type constraints, and deprecation notices from option resolvers. Updated docblock parameter annotations to exclude httplug_client from config shapes.
Tests
tests/Functional/ProviderFactoryTest.php
Removed testProviderConfigurationWithDeprecatedHttplugClientOption() test method that validated deprecated HTTPlug client configuration behavior.
Test Configuration
tests/Functional/config/deprecated_httplug_client_option.yml
Deleted entire configuration file containing HTTPlug-based client setup; removed profiling settings and provider configuration using httplug_client.
Baseline Configuration
tests/baseline-ignore
Removed deprecation note line referencing Nyholm\Psr7\Factory\HttplugFactory.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

  • Consistency verification across factories: Ensure the identical pattern (removal of httplug_client fallback, defaults, type constraints, deprecation notices) is applied uniformly across all 23 factories
  • Configuration resolution flow: Verify the simplified HTTP client resolution chain (config['http_client'] ?? $this->httpClient ?? Psr18ClientDiscovery::find()) is correct in each factory
  • Docblock accuracy: Check that all updated parameter annotations correctly reflect the new config shapes without httplug_client
  • Documentation alignment: Confirm that doc/index.md and doc/services.md examples match the actual implementation changes
  • Test removal validity: Verify that testProviderConfigurationWithDeprecatedHttplugClientOption() removal is safe given the configuration file deletion

Poem

🐰 Old HTTPlug clients, now we bid adieu,
PSR-18's clean standard shines bright and true,
Twenty-three factories cleaned up with care,
Simpler, swifter, without deprecated despair!
Discovery falls back when config's not there,
Hopping onward to cleaner code, everywhere!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: removing the deprecated httplug_client option from all provider factories, which is reflected across 20+ modified factory files and documentation updates.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
src/ProviderFactory/MapboxFactory.php (1)

25-48: MapboxFactory config and http_client resolution correctly aligned

The config array shape, required/optional options, and http_client resolution ($config['http_client'] ?? $this->httpClient ?? Psr18ClientDiscovery::find()) are consistent with the Mapbox constructor and with other factories; httplug_client removal here is clean.

If you ever want to DRY this up, the shared http_client resolution pattern could live in AbstractFactory and be reused by all providers, but that’s not required for this PR.

doc/services.md (1)

11-41: Fix markdown table formatting to add trailing pipes and ensure column consistency.

The markdown table is missing trailing pipes on all data rows, and line 19 (GeoipFactory) is missing the options column. To comply with markdown lint rules (MD055, MD056) and maintain visual consistency, all table rows should have leading and trailing pipes.

Additionally, verify whether GeoipFactory truly has no configuration options, as it appears unique among the provider factories listed.

Apply this diff to fix the table formatting:

-| `Bazinga\GeocoderBundle\ProviderFactory\AlgoliaPlaceFactory` | http_client, api_key, app_id
-| `Bazinga\GeocoderBundle\ProviderFactory\ArcGISOnlineFactory` | http_client, source_country
-| `Bazinga\GeocoderBundle\ProviderFactory\BingMapsFactory` | http_client, api_key
+| `Bazinga\GeocoderBundle\ProviderFactory\AlgoliaPlaceFactory` | http_client, api_key, app_id |
+| `Bazinga\GeocoderBundle\ProviderFactory\ArcGISOnlineFactory` | http_client, source_country |
+| `Bazinga\GeocoderBundle\ProviderFactory\BingMapsFactory` | http_client, api_key |
 | `Bazinga\GeocoderBundle\ProviderFactory\ChainFactory` | services
-| `Bazinga\GeocoderBundle\ProviderFactory\FreeGeoIpFactory` | http_client, base_url
+| `Bazinga\GeocoderBundle\ProviderFactory\FreeGeoIpFactory` | http_client, base_url |
 | `Bazinga\GeocoderBundle\ProviderFactory\GeoIP2Factory` | provider, database_filename, user_id, license_key, webservice_options, locales, provider_service
-| `Bazinga\GeocoderBundle\ProviderFactory\GeoipFactory` |
-| `Bazinga\GeocoderBundle\ProviderFactory\GeoIPsFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\GeonamesFactory` | http_client, username
-| `Bazinga\GeocoderBundle\ProviderFactory\GeoPluginFactory` | http_client
-| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsFactory` | http_client, api_key, region
-| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsPlacesFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\HereFactory` | http_client, app_id, app_code, use_cit
-| `Bazinga\GeocoderBundle\ProviderFactory\HostIpFactory` | http_client
-| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory` | http_client
-| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoDbFactory` | http_client, api_key, precision
-| `Bazinga\GeocoderBundle\ProviderFactory\IpstackFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\LocationIQFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\MapboxFactory` | http_client, api_key, country, mode
-| `Bazinga\GeocoderBundle\ProviderFactory\MapQuestFactory` | http_client, api_key, licensed
-| `Bazinga\GeocoderBundle\ProviderFactory\MapzenFactory` | http_client, api_key
+| `Bazinga\GeocoderBundle\ProviderFactory\GeoipFactory` | |
+| `Bazinga\GeocoderBundle\ProviderFactory\GeoIPsFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\GeonamesFactory` | http_client, username |
+| `Bazinga\GeocoderBundle\ProviderFactory\GeoPluginFactory` | http_client |
+| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsFactory` | http_client, api_key, region |
+| `Bazinga\GeocoderBundle\ProviderFactory\GoogleMapsPlacesFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\HereFactory` | http_client, app_id, app_code, use_cit |
+| `Bazinga\GeocoderBundle\ProviderFactory\HostIpFactory` | http_client |
+| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoFactory` | http_client |
+| `Bazinga\GeocoderBundle\ProviderFactory\IpInfoDbFactory` | http_client, api_key, precision |
+| `Bazinga\GeocoderBundle\ProviderFactory\IpstackFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\LocationIQFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\MapboxFactory` | http_client, api_key, country, mode |
+| `Bazinga\GeocoderBundle\ProviderFactory\MapQuestFactory` | http_client, api_key, licensed |
+| `Bazinga\GeocoderBundle\ProviderFactory\MapzenFactory` | http_client, api_key |
 | `Bazinga\GeocoderBundle\ProviderFactory\MaxMindBinaryFactory` | dat_file, open_flag
-| `Bazinga\GeocoderBundle\ProviderFactory\MaxMindFactory` | http_client, api_key, endpoint
-| `Bazinga\GeocoderBundle\ProviderFactory\NominatimFactory` | http_client, root_url
-| `Bazinga\GeocoderBundle\ProviderFactory\OpenCageFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\OpenRouteServiceFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\PickPointFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\TomTomFactory` | http_client, api_key
-| `Bazinga\GeocoderBundle\ProviderFactory\YandexFactory` | http_client, toponym
+| `Bazinga\GeocoderBundle\ProviderFactory\MaxMindFactory` | http_client, api_key, endpoint |
+| `Bazinga\GeocoderBundle\ProviderFactory\NominatimFactory` | http_client, root_url |
+| `Bazinga\GeocoderBundle\ProviderFactory\OpenCageFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\OpenRouteServiceFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\PickPointFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\TomTomFactory` | http_client, api_key |
+| `Bazinga\GeocoderBundle\ProviderFactory\YandexFactory` | http_client, toponym |
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9f3069c and 3cd1b1c.

📒 Files selected for processing (28)
  • doc/index.md (3 hunks)
  • doc/services.md (1 hunks)
  • src/ProviderFactory/AlgoliaFactory.php (1 hunks)
  • src/ProviderFactory/ArcGISOnlineFactory.php (1 hunks)
  • src/ProviderFactory/BingMapsFactory.php (1 hunks)
  • src/ProviderFactory/FreeGeoIpFactory.php (1 hunks)
  • src/ProviderFactory/GeoPluginFactory.php (1 hunks)
  • src/ProviderFactory/GeonamesFactory.php (1 hunks)
  • src/ProviderFactory/GoogleMapsFactory.php (1 hunks)
  • src/ProviderFactory/GoogleMapsPlacesFactory.php (1 hunks)
  • src/ProviderFactory/HereFactory.php (1 hunks)
  • src/ProviderFactory/HostIpFactory.php (1 hunks)
  • src/ProviderFactory/IpInfoDbFactory.php (1 hunks)
  • src/ProviderFactory/IpInfoFactory.php (1 hunks)
  • src/ProviderFactory/IpstackFactory.php (1 hunks)
  • src/ProviderFactory/LocationIQFactory.php (1 hunks)
  • src/ProviderFactory/MapQuestFactory.php (1 hunks)
  • src/ProviderFactory/MapboxFactory.php (1 hunks)
  • src/ProviderFactory/MaxMindFactory.php (1 hunks)
  • src/ProviderFactory/NominatimFactory.php (1 hunks)
  • src/ProviderFactory/OpenCageFactory.php (1 hunks)
  • src/ProviderFactory/OpenRouteServiceFactory.php (1 hunks)
  • src/ProviderFactory/PickPointFactory.php (1 hunks)
  • src/ProviderFactory/TomTomFactory.php (1 hunks)
  • src/ProviderFactory/YandexFactory.php (1 hunks)
  • tests/Functional/ProviderFactoryTest.php (0 hunks)
  • tests/Functional/config/deprecated_httplug_client_option.yml (0 hunks)
  • tests/baseline-ignore (0 hunks)
💤 Files with no reviewable changes (3)
  • tests/Functional/config/deprecated_httplug_client_option.yml
  • tests/baseline-ignore
  • tests/Functional/ProviderFactoryTest.php
🧰 Additional context used
🧬 Code graph analysis (18)
src/ProviderFactory/PickPointFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapboxFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/OpenRouteServiceFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/YandexFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/IpstackFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/AlgoliaFactory.php (16)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/TomTomFactory.php (6)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (4)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/GeoPluginFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (3)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HostIpFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MaxMindFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/NominatimFactory.php (3)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MaxMindFactory.php (16)
src/ProviderFactory/AlgoliaFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/ArcGISOnlineFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/BingMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/FreeGeoIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeoPluginFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GeonamesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/GoogleMapsPlacesFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/HereFactory.php (1)
  • getProvider (30-47)
src/ProviderFactory/HostIpFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoDbFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpInfoFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/IpstackFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/LocationIQFactory.php (1)
  • getProvider (28-33)
src/ProviderFactory/MapQuestFactory.php (1)
  • getProvider (30-35)
src/ProviderFactory/MapboxFactory.php (1)
  • getProvider (28-33)
🪛 markdownlint-cli2 (0.18.1)
doc/services.md

13-13: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


14-14: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


15-15: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


16-16: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


17-17: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


18-18: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


19-19: Table column count
Expected: 2; Actual: 1; Too few cells, row will be missing data

(MD056, table-column-count)


20-20: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


21-21: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


22-22: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


23-23: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


24-24: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


25-25: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


26-26: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


27-27: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


28-28: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


29-29: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


30-30: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


31-31: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


32-32: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


33-33: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


34-34: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


35-35: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


36-36: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


37-37: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


38-38: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


39-39: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


40-40: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)


41-41: Table pipe style
Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe

(MD055, table-pipe-style)

🔇 Additional comments (23)
src/ProviderFactory/TomTomFactory.php (1)

28-46: Clean deprecation removal.

The changes correctly remove the deprecated httplug_client option and standardize on http_client with PSR-18 discovery fallback. The implementation is consistent with the pattern applied across all provider factories in this PR.

src/ProviderFactory/PickPointFactory.php (1)

28-46: LGTM!

The refactoring consistently removes the deprecated httplug_client option. The HTTP client resolution properly falls back through config['http_client']$this->httpClient → PSR-18 discovery.

src/ProviderFactory/YandexFactory.php (1)

28-48: Clean implementation.

The removal of httplug_client is correctly implemented. The additional configuration options (toponym, api_key) are properly preserved, and the HTTP client resolution follows the standardized pattern.

src/ProviderFactory/OpenRouteServiceFactory.php (1)

28-47: LGTM!

The deprecation removal is correctly implemented with the standardized HTTP client resolution pattern.

src/ProviderFactory/HostIpFactory.php (1)

28-44: Clean refactoring.

The simplest example of the httplug_client removal. The implementation is correct and follows the established pattern.

src/ProviderFactory/IpstackFactory.php (1)

28-46: LGTM!

The refactoring correctly removes the deprecated option and standardizes on http_client with proper fallback handling.

src/ProviderFactory/AlgoliaFactory.php (1)

28-48: Clean implementation.

The httplug_client removal is correctly applied. The additional configuration options (api_key, app_id) are properly maintained alongside the standardized HTTP client resolution.

src/ProviderFactory/NominatimFactory.php (1)

28-49: LGTM!

The refactoring correctly removes httplug_client while preserving the Nominatim-specific configuration options (root_url, user_agent). The HTTP client resolution follows the standardized pattern across all provider factories.

src/ProviderFactory/FreeGeoIpFactory.php (1)

27-45: FreeGeoIp http_client migration is consistent and type-safe

Docblock config shape, http_client resolution order, and OptionsResolver defaults/types all line up with the FreeGeoIp constructor and the pattern used in other factories; removal of httplug_client here looks correct.

src/ProviderFactory/BingMapsFactory.php (1)

27-46: BingMapsFactory migration away from httplug_client looks correct

Config typing, resolver defaults/requirements, and the http_client discovery chain are coherent and match the BingMaps constructor; the deprecated httplug_client path is fully removed here.

src/ProviderFactory/GeonamesFactory.php (1)

27-45: GeonamesFactory http_client handling and config shape are consistent

The resolver’s defaults and required options match the docblock array shape, and the standardized http_client resolution cleanly replaces the old httplug_client behavior without introducing inconsistencies.

src/ProviderFactory/LocationIQFactory.php (1)

25-44: LocationIQFactory correctly unified on http_client

Config definition, OptionsResolver setup, and http_client discovery are coherent and mirror other providers; the deprecated httplug_client option is fully gone with no apparent regressions.

src/ProviderFactory/GoogleMapsPlacesFactory.php (1)

27-45: GoogleMapsPlacesFactory http_client migration matches the shared pattern

The new config shape, resolver defaults, and http_client discovery order are correct and consistent with other factories, completing removal of the deprecated httplug_client path here.

src/ProviderFactory/GeoPluginFactory.php (1)

27-44: GeoPluginFactory simplified config is coherent

With only http_client in the config shape, the resolver defaults and the http_client discovery chain are straightforward and correct, and GeoPlugin is constructed with the resolved client as expected.

src/ProviderFactory/MapQuestFactory.php (1)

27-48: MapQuestFactory config and http_client resolution look good

The array shape in the docblock, resolver defaults/types (including licensed), and the unified http_client resolution are all consistent with the MapQuest constructor; httplug_client is cleanly removed here as well.

src/ProviderFactory/MaxMindFactory.php (1)

28-32: MaxMindFactory HTTP client selection and config shape look consistent

Docblock, option defaults, and $httpClient resolution are correctly aligned on http_client only and match the shared pattern used by other factories. No functional or BC issues beyond the intended removal of httplug_client.

src/ProviderFactory/ArcGISOnlineFactory.php (1)

28-32: ArcGISOnlineFactory correctly migrated to http_client-only configuration

The updated config type and $httpClient resolution align with the new http_client option and with other factories, with no remaining httplug_client paths.

src/ProviderFactory/HereFactory.php (1)

28-37: HereFactory HTTP client handling updated cleanly

The config docblock and $httpClient resolution now rely solely on http_client (plus the factory default and PSR-18 discovery), which matches the rest of the bundle and keeps existing Here auth logic intact.

src/ProviderFactory/IpInfoDbFactory.php (1)

28-33: IpInfoDbFactory now consistently uses http_client and PSR-18 discovery

The updated config docblock and HTTP client resolution chain are coherent and match the shared pattern (http_client → factory default → discovery), with httplug_client fully removed.

src/ProviderFactory/IpInfoFactory.php (1)

28-33: IpInfoFactory deprecation removal is minimal and correct

Config typing and $httpClient resolution now exclusively use http_client, matching the standardized pattern across factories and removing the deprecated httplug_client path without altering provider behavior.

src/ProviderFactory/GoogleMapsFactory.php (1)

28-33: GoogleMapsFactory cleanly standardized on http_client

The docblock, defaults, and $httpClient resolution are consistent and remove the deprecated httplug_client option while preserving the existing constructor call for GoogleMaps.

doc/index.md (1)

87-96: Documentation now accurately reflects http_client and PSR‑18 usage

The YAML snippets and the expanded “Custom HTTP Clients” section correctly reference the http_client option and a PSR‑18 client, matching the factories’ expectations and giving a clear, practical Guzzle wiring example.

Also applies to: 118-121, 296-319

src/ProviderFactory/OpenCageFactory.php (1)

28-33: OpenCageFactory correctly switched to the unified http_client path

Config typing, option resolver, and $httpClient resolution now exclusively use http_client and PSR‑18 discovery, matching the shared pattern across factories and the updated docs.

@norkunas norkunas merged commit d797ec8 into geocoder-php:master Dec 11, 2025
35 of 37 checks passed
@norkunas norkunas deleted the nohttplug branch December 11, 2025 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant