api: add new nominatim_reverse_zoom_level site option (#18786)

This commit is contained in:
Frédéric Péters 2017-09-19 17:03:15 +02:00
parent 726ee066a1
commit 5cad6868d1
2 changed files with 25 additions and 1 deletions

View File

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from StringIO import StringIO
import pytest
import json
import shutil
@ -7,6 +8,7 @@ import os
import hmac
import base64
import hashlib
import mock
import urllib
import urlparse
import datetime
@ -1820,3 +1822,22 @@ def test_get_secret_and_orig(no_request_pub):
secret, orig = get_secret_and_orig('https://api.example.com/endpoint/')
assert secret == '1234'
assert orig == 'example.net'
def test_reverse_geocoding(pub):
with mock.patch('urllib2.urlopen') as urlopen:
urlopen.side_effect = lambda *args: StringIO('xxx')
get_app(pub).get('/api/reverse-geocoding', status=400)
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0')
assert resp.body == 'xxx'
assert urlopen.call_args[0][0] == 'http://nominatim.openstreetmap.org/reverse?format=json&zoom=18&addressdetails=1&lat=0&lon=0&accept-language=en'
pub.site_options.add_section('options')
pub.site_options.set('options', 'nominatim_reverse_zoom_level', '16')
pub.site_options.write(open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w'))
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0')
assert urlopen.call_args[0][0] == 'http://nominatim.openstreetmap.org/reverse?format=json&zoom=16&addressdetails=1&lat=0&lon=0&accept-language=en'
pub.site_options.set('options', 'nominatim_key', 'KEY')
pub.site_options.write(open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w'))
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0')
assert urlopen.call_args[0][0] == 'http://nominatim.openstreetmap.org/reverse?format=json&zoom=16&addressdetails=1&lat=0&lon=0&accept-language=en&key=KEY'

View File

@ -657,8 +657,11 @@ class ApiDirectory(Directory):
nominatim_url = get_publisher().get_site_option('nominatim_url')
if not nominatim_url:
nominatim_url = 'http://nominatim.openstreetmap.org'
nominatim_reverse_zoom_level = get_publisher().get_site_option(
'nominatim_reverse_zoom_level') or 18
get_response().set_content_type('application/json')
url = '%s/reverse?format=json&zoom=18&addressdetails=1&lat=%s&lon=%s' % (nominatim_url, lat, lon)
url = '%s/reverse?format=json&zoom=%s&addressdetails=1&lat=%s&lon=%s' % (
nominatim_url, nominatim_reverse_zoom_level, lat, lon)
url += '&accept-language=%s' % (get_publisher().get_site_language() or 'en')
if get_publisher().get_site_option('nominatim_key'):
url += '&key=' + get_publisher().get_site_option('nominatim_key')