From 26d57fd35f6815ea2140602293f6732e1807aa18 Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Mon, 12 Mar 2018 20:19:22 -0700 Subject: [PATCH] Allow HTTP protocol for Nominatim lookup but default to HTTPS (custom hosts may not support HTTPS). This partially reverts 7cb0acc985ccb49c65c0529dab1d111165e8a1b9. --- lib/geocoder/lookups/location_iq.rb | 10 +++++----- lib/geocoder/lookups/nominatim.rb | 18 +++++++++++++----- test/unit/lookups/nominatim_test.rb | 2 +- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/geocoder/lookups/location_iq.rb b/lib/geocoder/lookups/location_iq.rb index 3773d406..d9fb0659 100644 --- a/lib/geocoder/lookups/location_iq.rb +++ b/lib/geocoder/lookups/location_iq.rb @@ -13,15 +13,15 @@ module Geocoder::Lookup def query_url(query) method = query.reverse_geocode? ? "reverse" : "search" - "#{protocol}://locationiq.org/v1/#{method}.php?key=#{configuration.api_key}&" + url_query_string(query) - end - - def supported_protocols - [:http, :https] + "#{protocol}://#{configured_host}/v1/#{method}.php?key=#{configuration.api_key}&" + url_query_string(query) end private + def configured_host + configuration[:host] || "locationiq.org" + end + def results(query) return [] unless doc = fetch_data(query) diff --git a/lib/geocoder/lookups/nominatim.rb b/lib/geocoder/lookups/nominatim.rb index 18a20300..cee363a5 100644 --- a/lib/geocoder/lookups/nominatim.rb +++ b/lib/geocoder/lookups/nominatim.rb @@ -14,15 +14,23 @@ module Geocoder::Lookup def query_url(query) method = query.reverse_geocode? ? "reverse" : "search" - host = configuration[:host] || "nominatim.openstreetmap.org" - "#{protocol}://#{host}/#{method}?" + url_query_string(query) + "#{protocol}://#{configured_host}/#{method}?" + url_query_string(query) end - def supported_protocols - [:https] + private # --------------------------------------------------------------- + + def configured_host + configuration[:host] || "nominatim.openstreetmap.org" end - private # --------------------------------------------------------------- + def use_ssl? + # nominatim.openstreetmap.org redirects HTTP requests to HTTPS + if configured_host == "nominatim.openstreetmap.org" + true + else + super + end + end def results(query) return [] unless doc = fetch_data(query) diff --git a/test/unit/lookups/nominatim_test.rb b/test/unit/lookups/nominatim_test.rb index c75cf458..27d2d1d7 100644 --- a/test/unit/lookups/nominatim_test.rb +++ b/test/unit/lookups/nominatim_test.rb @@ -37,7 +37,7 @@ class NominatimTest < GeocoderTestCase def test_host_configuration Geocoder.configure(nominatim: {host: "local.com"}) query = Geocoder::Query.new("Bluffton, SC") - assert_match %r(https://local\.com), query.url + assert_match %r(http://local\.com), query.url end def test_raises_exception_when_over_query_limit -- GitLab