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",