Skip to content
Snippets Groups Projects
Commit 6165b9bf authored by Travis Pew's avatar Travis Pew
Browse files

Add geocod.io exceptions

parent a70042a6
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