diff --git a/utils/service/geo_service.go b/utils/service/geo_service.go index 2ac7952..b54e033 100644 --- a/utils/service/geo_service.go +++ b/utils/service/geo_service.go @@ -61,6 +61,11 @@ func (g *nominatimGeocoder) GetAddressFromCoordinates(latitude, longitude float6 } defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + log.Printf("Nominatim returned HTTP %d for lat=%f lon=%f", resp.StatusCode, latitude, longitude) + return "", fmt.Errorf("geocoding service returned status %d", resp.StatusCode) + } + // Read full response body bodyBytes, err := ioutil.ReadAll(resp.Body) if err != nil { @@ -68,6 +73,10 @@ func (g *nominatimGeocoder) GetAddressFromCoordinates(latitude, longitude float6 return "", err } + if len(bodyBytes) > 0 && bodyBytes[0] == '<' { + log.Printf("Nominatim returned HTML instead of JSON (possible rate limit) for lat=%f lon=%f", latitude, longitude) + return "", fmt.Errorf("geocoding service unavailable (rate limited or network error)") + } var result NominatimResponse if err := json.Unmarshal(bodyBytes, &result); err != nil {