From 54b6484a1672d6e1d3d308a039412907acfff13f Mon Sep 17 00:00:00 2001
From: Huiming Teo <teohuiming@gmail.com>
Date: Mon, 5 Sep 2016 14:23:48 +0800
Subject: [PATCH] Return valid result when searching for loopback address using
 ipinfo.io

---
 lib/geocoder/lookups/ipinfo_io.rb   | 9 ++++++++-
 test/unit/lookups/ipinfo_io_test.rb | 8 ++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lib/geocoder/lookups/ipinfo_io.rb b/lib/geocoder/lookups/ipinfo_io.rb
index 2c126b11..b7966d46 100644
--- a/lib/geocoder/lookups/ipinfo_io.rb
+++ b/lib/geocoder/lookups/ipinfo_io.rb
@@ -42,7 +42,14 @@ module Geocoder::Lookup
     end
 
     def reserved_result(ip)
-      {"message" => "Input string is not a valid IP address", "code" => 401}
+      {
+        "ip"           => ip,
+        "city"         => "",
+        "region"       => "",
+        "country"      => "",
+        "loc"          => "0,0",
+        "postal"       => ""
+      }
     end
 
     def query_url_params(query)
diff --git a/test/unit/lookups/ipinfo_io_test.rb b/test/unit/lookups/ipinfo_io_test.rb
index 379f3838..60b3ca31 100644
--- a/test/unit/lookups/ipinfo_io_test.rb
+++ b/test/unit/lookups/ipinfo_io_test.rb
@@ -14,4 +14,12 @@ class IpinfoIoTest < GeocoderTestCase
     query = Geocoder::Query.new("8.8.8.8")
     assert_match(/^https:/, query.url)
   end
+
+  def test_ipinfo_io_lookup_loopback_address
+    Geocoder.configure(:ip_lookup => :ipinfo_io, :use_https => true)
+    result = Geocoder.search("127.0.0.1").first
+    assert_equal 0.0, result.longitude
+    assert_equal 0.0, result.latitude
+    assert_equal "127.0.0.1", result.ip
+  end
 end
-- 
GitLab