Conversation
Introduces provider-specific environment variables (HERE_API_KEY, GOOGLE_API_KEY) while maintaining GEOCODE_API_KEY as a legacy fallback. Updates GEOCODE_PROVIDER to accept comma-separated provider chains (e.g. 'here,google') enabling fallback behavior. Adds IMMICH_EXTERNAL_URL and DAWARICH_URL configuration. Change-Type: feature Scope: config
Replaces the rigid 2-provider fallback with an N-provider chain pattern. Providers are tried in sequence; weak results (coordinates or 'Unknown') trigger the next provider. Adds resolveKey helper for API key resolution and describeProvider for logging the active chain. Change-Type: refactor Scope: geocoder
Implements reverse geocoding and forward search against Google Maps API. Includes per-request rate limiting and address component-based label building to match existing provider behavior. Change-Type: feature Scope: providers
Extracts Nominatim rate limiter adaptation into adaptRateLimiter method. Fixes language parameter to default to 'en' when not provided across all providers. Adds explicit 429 (rate limit) checks and simplifies string building logic in nominatimClient. Change-Type: refactor Scope: providers
Updates geocode provider initialization to accept structured API keys object. Uses describeProvider for logging the active provider chain instead of raw config string. Change-Type: refactor Scope: main
Add language parameter support to ReverseGeocode interface and all provider implementations. This allows callers to specify preferred language for address results, with "en" as the default fallback. Each provider integrates the language parameter according to its API: - Google Maps: uses 'language' query parameter - HERE: uses 'lang' query parameter - Nominatim: uses 'Accept-Language' header Updates all call sites and tests to pass language to the method. Change-Type: feature Scope: geocoding
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Google Maps geocoding provider
Chain geocoder replacing fallback geocoder
GEOCODE_PROVIDERnow accepts comma-separated values (ex:here,google)chainGeocoderreplaces the old two-providerfallbackGeocoderdescribeProvider()for accurate startup loggingProvider-specific API keys
HERE_API_KEY,GOOGLE_API_KEYGEOCODE_API_KEYkept as legacy fallback viaresolveKey()Language parameter on ReverseGeocode
ReverseGeocodenow accepts lang string (was hardcoded "en")Rate limit handling improvements
ForwardSearchnow has adaptive 429 handling (was missing)ForwardSearchnow returns descriptive 429 errorsadaptRateLimiter()method eliminates code duplicationForwardSearchimplementations default lang to "en"Config/docs
IMMICH_EXTERNAL_URLandDAWARICH_URLpass-through