Skip to content
Snippets Groups Projects
Commit 99623aba authored by Alex Reisner's avatar Alex Reisner
Browse files

Merge pull request #616 from TanookiSuitLabs/geocodio-exceptions

Add geocod.io exceptions
parents a70042a6 6165b9bf
No related branches found
No related tags found
No related merge requests found
...@@ -15,10 +15,17 @@ module Geocoder::Lookup ...@@ -15,10 +15,17 @@ module Geocoder::Lookup
def results(query) def results(query)
return [] unless doc = fetch_data(query) return [] unless doc = fetch_data(query)
if doc['error'].nil? return doc["results"] if doc['error'].nil?
return doc["results"]
if doc['error'] == 'Invalid API key'
raise_error(Geocoder::InvalidApiKey) ||
warn("Geocodio service error: invalid API key.")
elsif doc['error'].match(/You have reached your daily maximum/)
raise_error(Geocoder::OverQueryLimitError, doc['error']) ||
warn("Geocodio service error: #{doc['error']}.")
else else
warn "Geocodio service error: #{doc['error']}." raise_error(Geocoder::InvalidRequest, doc['error']) ||
warn("Geocodio service error: #{doc['error']}.")
end end
[] []
end end
......
{
"error": "Invalid API key"
}
{
"error": "Could not geocode address, zip code, city or city/state are required"
}
{
"error": "You have reached your daily maximum, please add a payment method for continued use. You can configure billing at https://dash.geocod.io"
}
...@@ -31,4 +31,25 @@ class GeocodioTest < GeocoderTestCase ...@@ -31,4 +31,25 @@ class GeocodioTest < GeocoderTestCase
query = Geocoder::Query.new([45.423733, -75.676333]) query = Geocoder::Query.new([45.423733, -75.676333])
assert_match /reverse/, query.url assert_match /reverse/, query.url
end end
def test_raises_invalid_request_exception
Geocoder.configure Geocoder.configure(:always_raise => [Geocoder::InvalidRequest])
assert_raises Geocoder::InvalidRequest do
Geocoder.search("invalid")
end
end
def test_raises_api_key_exception
Geocoder.configure Geocoder.configure(:always_raise => [Geocoder::InvalidApiKey])
assert_raises Geocoder::InvalidApiKey do
Geocoder.search("bad api key")
end
end
def test_raises_over_limit_exception
Geocoder.configure Geocoder.configure(:always_raise => [Geocoder::OverQueryLimitError])
assert_raises Geocoder::OverQueryLimitError do
Geocoder.search("over query limit")
end
end
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment