chore: add Kotlin directory structure, update registry.db and gitignore

Añade estructura inicial kotlin/functions/, actualiza registry.db con todos
los cambios indexados, y ajusta .gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-06 23:47:27 +02:00
parent dede5e00af
commit 73d181f2b0
13 changed files with 1005 additions and 1 deletions
@@ -0,0 +1,58 @@
---
name: nominatim_reverse_geocode
kind: function
lang: kt
domain: infra
version: "1.0.0"
purity: impure
signature: "fun nominatimReverseGeocode(lat: Double, lon: Double, lang: String = \"es\"): GeocodedLocation"
description: "Reverse geocoding usando Nominatim (OpenStreetMap). Convierte coordenadas lat/lon a una dirección estructurada (calle, ciudad, país, etc.) para Android/Kotlin sin dependencias externas."
tags: [geocoding, nominatim, openstreetmap, location, address, infra, android, kotlin]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports:
- "org.json.JSONObject"
- "java.net.HttpURLConnection"
- "java.net.URL"
tested: false
tests: []
test_file_path: ""
file_path: "kotlin/functions/infra/nominatim_reverse_geocode.kt"
params:
- name: lat
desc: "Latitud en grados decimales (-90.0 a 90.0)."
- name: lon
desc: "Longitud en grados decimales (-180.0 a 180.0)."
- name: lang
desc: "Código de idioma ISO 639-1 para la respuesta de Nominatim. Por defecto \"es\" (español)."
output: "GeocodedLocation con los campos normalizados: displayName, street, houseNumber, neighbourhood, city, state, country, postcode, lat, lon, osmType, osmId."
---
## Ejemplo
```kotlin
val loc = nominatimReverseGeocode(40.4168, -3.7038)
println(loc.city) // "Madrid"
println(loc.street) // "Calle Mayor"
println(loc.country) // "España"
println(loc.displayName) // cadena completa de Nominatim
```
## Comportamiento
- Realiza GET a `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=...&lon=...&accept-language=...&zoom=18`.
- Cabecera `User-Agent: fn_registry/1.0` obligatoria por política de uso de Nominatim.
- Timeout de 5 segundos tanto para conexión como para lectura.
- Usa solo `java.net.HttpURLConnection` y `org.json.JSONObject` — disponibles en el Android SDK sin dependencias externas.
- Resolución de `city`: prueba `address.city``address.town``address.village``""`.
- Resolución de `neighbourhood`: prueba `address.neighbourhood``address.suburb``""`.
- Lanza `RuntimeException` si el HTTP status no es 200 o si falla la lectura de la respuesta.
## Notas
Función paralela a `nominatim_reverse_geocode_py_infra` pero adaptada para Android/Kotlin.
No llamar desde el hilo principal de Android — usar `Dispatchers.IO` o un `ExecutorService`.
El campo `zoom=18` maximiza el detalle de la dirección (nivel de número de portal).