From 438f87e9ef85d3c04d5e1cfd6fa0d5059bd71cdc Mon Sep 17 00:00:00 2001
From: Shinya Kitamura <shinya.kitamura@sugar.sg>
Date: Tue, 24 May 2016 10:42:03 +0800
Subject: [PATCH] Add Pelias (Mapzen) reverse geocoding

---
 lib/geocoder/lookups/pelias.rb   | 14 +++++++++++---
 test/unit/lookups/pelias_test.rb |  6 ++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/lib/geocoder/lookups/pelias.rb b/lib/geocoder/lookups/pelias.rb
index 31c89696..22546255 100644
--- a/lib/geocoder/lookups/pelias.rb
+++ b/lib/geocoder/lookups/pelias.rb
@@ -23,11 +23,19 @@ module Geocoder::Lookup
     private
 
     def query_url_params(query)
-      {
+      params = {
         api_key: configuration.api_key,
-        text: query.text,
         size: 1
-      }.merge(super(query))
+      }.merge(super)
+
+      if query.reverse_geocode?
+        lat,lon = query.coordinates
+        params[:'point.lat'] = lat
+        params[:'point.lon'] = lon
+      else
+        params[:text] = query.text
+      end
+      params
     end
 
     def results(query)
diff --git a/test/unit/lookups/pelias_test.rb b/test/unit/lookups/pelias_test.rb
index ba209d6e..24826462 100644
--- a/test/unit/lookups/pelias_test.rb
+++ b/test/unit/lookups/pelias_test.rb
@@ -21,4 +21,10 @@ class PeliasTest < GeocoderTestCase
     query = Geocoder::Query.new('Madison Square Garden, New York, NY')
     assert_match 'size=1', query.url
   end
+
+  def test_query_for_reverse_geocode
+    lookup = Geocoder::Lookup::Mapzen.new
+    url = lookup.query_url(Geocoder::Query.new([45.423733, -75.676333]))
+    assert_match(/point.lat=45.423733&point.lon=-75.676333&size=1/, url)
+  end
 end
-- 
GitLab