X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/bef5cea48e3ead13185e01958f7a3a80d185b11e..f335e78d1eb54737202aa7a1bafaece19b6659a6:/nominatim/api/v1/server_glue.py diff --git a/nominatim/api/v1/server_glue.py b/nominatim/api/v1/server_glue.py index fb91a0cd..1dcfdbc6 100644 --- a/nominatim/api/v1/server_glue.py +++ b/nominatim/api/v1/server_glue.py @@ -17,6 +17,7 @@ from nominatim.config import Configuration import nominatim.api as napi import nominatim.api.logging as loglib from nominatim.api.v1.format import dispatch as formatting +from nominatim.api.v1 import helpers CONTENT_TYPE = { 'text': 'text/plain; charset=utf-8', @@ -304,6 +305,8 @@ async def details_endpoint(api: napi.NominatimAPIAsync, params: ASGIAdaptor) -> if result is None: params.raise_error('No place with that OSM ID found.', status=404) + result.localize(locales) + output = formatting.format_result(result, fmt, {'locales': locales, 'group_hierarchy': params.get_bool('group_hierarchy', False), @@ -319,10 +322,9 @@ async def reverse_endpoint(api: napi.NominatimAPIAsync, params: ASGIAdaptor) -> debug = params.setup_debugging() coord = napi.Point(params.get_float('lon'), params.get_float('lat')) locales = napi.Locales.from_accept_languages(params.get_accepted_languages()) - zoom = max(0, min(18, params.get_int('zoom', 18))) details = params.parse_geometry_details(fmt) - details['max_rank'] = REVERSE_MAX_RANKS[zoom] + details['max_rank'] = helpers.zoom_to_rank(params.get_int('zoom', 18)) details['layers'] = params.get_layers() result = await api.reverse(coord, **details) @@ -330,11 +332,13 @@ async def reverse_endpoint(api: napi.NominatimAPIAsync, params: ASGIAdaptor) -> if debug: return params.build_response(loglib.get_and_disable()) - fmt_options = {'locales': locales, - 'extratags': params.get_bool('extratags', False), + fmt_options = {'extratags': params.get_bool('extratags', False), 'namedetails': params.get_bool('namedetails', False), 'addressdetails': params.get_bool('addressdetails', True)} + if result: + result.localize(locales) + output = formatting.format_result(napi.ReverseResults([result] if result else []), fmt, fmt_options) @@ -363,33 +367,19 @@ async def lookup_endpoint(api: napi.NominatimAPIAsync, params: ASGIAdaptor) -> A if debug: return params.build_response(loglib.get_and_disable()) - fmt_options = {'locales': locales, - 'extratags': params.get_bool('extratags', False), + fmt_options = {'extratags': params.get_bool('extratags', False), 'namedetails': params.get_bool('namedetails', False), 'addressdetails': params.get_bool('addressdetails', True)} + for result in results: + result.localize(locales) + output = formatting.format_result(results, fmt, fmt_options) return params.build_response(output) EndpointFunc = Callable[[napi.NominatimAPIAsync, ASGIAdaptor], Any] -REVERSE_MAX_RANKS = [2, 2, 2, # 0-2 Continent/Sea - 4, 4, # 3-4 Country - 8, # 5 State - 10, 10, # 6-7 Region - 12, 12, # 8-9 County - 16, 17, # 10-11 City - 18, # 12 Town - 19, # 13 Village/Suburb - 22, # 14 Hamlet/Neighbourhood - 25, # 15 Localities - 26, # 16 Major Streets - 27, # 17 Minor Streets - 30 # 18 Building - ] - - ROUTES = [ ('status', status_endpoint), ('details', details_endpoint),