lib/geocoder/lookups/esri.rb in geocoder-1.8.1 vs lib/geocoder/lookups/esri.rb in geocoder-1.8.2
- old
+ new
@@ -21,18 +21,31 @@
end
def results(query)
return [] unless doc = fetch_data(query)
- if (!query.reverse_geocode?)
- return [] if !doc['locations'] || doc['locations'].empty?
- end
-
if (doc['error'].nil?)
+ if (!query.reverse_geocode?)
+ return [] if !doc['locations'] || doc['locations'].empty?
+ end
return [ doc ]
else
- return []
+ case [ doc['error']['code'] ]
+ when [498]
+ raise_error(Geocoder::InvalidApiKey, doc['error']['message']) ||
+ Geocoder.log(:warn, "#{self.name} Geocoding API error: #{doc['error']['message']}")
+ when [ 403 ]
+ raise_error(Geocoder::RequestDenied, 'ESRI request denied') ||
+ Geocoder.log(:warn, "#{self.name} ESRI request denied: #{doc['error']['message']}")
+ when [ 500 ], [501]
+ raise_error(Geocoder::ServiceUnavailable, 'ESRI service unavailable') ||
+ Geocoder.log(:warn, "#{self.name} ESRI service error: #{doc['error']['message']}")
+ else
+ raise_error(Geocoder::Error, doc['error']['message']) ||
+ Geocoder.log(:warn, "#{self.name} Geocoding error: #{doc['error']['message']}")
+ end
end
+ return []
end
def query_url_params(query)
params = {
:f => "pjson",