class Geocoder::Lookup::Esri

def results(query)

def results(query)
  return [] unless doc = fetch_data(query)
  if (doc['error'].nil?)
    if (!query.reverse_geocode?)
      return [] if !doc['locations'] || doc['locations'].empty?
    end
    return [ doc ]
  else
    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