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