From 5e5dfcd523b4cd99f22ef67208e31bba5a8dcdea Mon Sep 17 00:00:00 2001 From: Robert Schaefer <robert.schaefer@student.hpi.de> Date: Thu, 11 Jan 2018 23:46:46 +0100 Subject: [PATCH] Check HTTP 403 error on missing api keys --- lib/geocoder/lookups/ipdata_co.rb | 9 +++++++++ test/unit/lookups/ipdata_co_test.rb | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/lib/geocoder/lookups/ipdata_co.rb b/lib/geocoder/lookups/ipdata_co.rb index a5fa295c..04e38fa4 100644 --- a/lib/geocoder/lookups/ipdata_co.rb +++ b/lib/geocoder/lookups/ipdata_co.rb @@ -43,5 +43,14 @@ module Geocoder::Lookup def host "api.ipdata.co" end + + def check_response_for_errors!(response) + if response.code.to_i == 403 + raise_error(Geocoder::RequestDenied) || + Geocoder.log(:warn, "Geocoding API error: 403 API key does not exist") + else + super(response) + end + end end end diff --git a/test/unit/lookups/ipdata_co_test.rb b/test/unit/lookups/ipdata_co_test.rb index 3811a13c..5acdcf72 100644 --- a/test/unit/lookups/ipdata_co_test.rb +++ b/test/unit/lookups/ipdata_co_test.rb @@ -24,4 +24,12 @@ class IpdataCoTest < GeocoderTestCase assert_equal "Jersey City, NJ 07302, United States", result.address end + def test_not_authorized + Geocoder.configure(always_raise: [Geocoder::RequestDenied]) + lookup = Geocoder::Lookup.get(:ipdata_co) + assert_raises Geocoder::RequestDenied do + response = MockHttpResponse.new(code: 403) + lookup.send(:check_response_for_errors!, response) + end + end end -- GitLab