From f1a9ed3b15c3e5417ca349d80052d3d7d94c1c8e Mon Sep 17 00:00:00 2001 From: Dounan Shi <dounan@gmail.com> Date: Wed, 24 May 2017 17:56:21 -0700 Subject: [PATCH] Add support for params in mapbox lookup. (#1159) --- lib/geocoder/lookups/mapbox.rb | 9 +++++++-- test/unit/lookups/mapbox_test.rb | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/geocoder/lookups/mapbox.rb b/lib/geocoder/lookups/mapbox.rb index 797c2648..36b11b01 100644 --- a/lib/geocoder/lookups/mapbox.rb +++ b/lib/geocoder/lookups/mapbox.rb @@ -9,7 +9,8 @@ module Geocoder::Lookup end def query_url(query) - "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{url_query_string(query)}.json?access_token=#{configuration.api_key}" + path = "#{mapbox_search_term(query)}.json?#{url_query_string(query)}" + "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{path}" end private # --------------------------------------------------------------- @@ -25,7 +26,11 @@ module Geocoder::Lookup end end - def url_query_string(query) + def query_url_params(query) + {access_token: configuration.api_key}.merge(super(query)) + end + + def mapbox_search_term(query) require 'cgi' unless defined?(CGI) && defined?(CGI.escape) if query.reverse_geocode? lat,lon = query.coordinates diff --git a/test/unit/lookups/mapbox_test.rb b/test/unit/lookups/mapbox_test.rb index 33d15924..5976442e 100644 --- a/test/unit/lookups/mapbox_test.rb +++ b/test/unit/lookups/mapbox_test.rb @@ -14,6 +14,12 @@ class MapboxTest < GeocoderTestCase assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123", query.url end + def test_url_contains_params + Geocoder.configure(mapbox: {api_key: "abc123"}) + query = Geocoder::Query.new("Leadville, CO", {params: {country: 'CN'}}) + assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123&country=CN", query.url + end + def test_result_components result = Geocoder.search("Madison Square Garden, New York, NY").first assert_equal [40.749688, -73.991566], result.coordinates -- GitLab