class Geocoder::Lookup::Esri

def name

def name
  "Esri"
end

def query_url(query)

def query_url(query)
  search_keyword = query.reverse_geocode? ? "reverseGeocode" : "find"
  "#{protocol}://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/#{search_keyword}?" +
    url_query_string(query)
end

def query_url_params(query)

def query_url_params(query)
  params = {
    :f => "pjson",
    :outFields => "*"
  }
  if query.reverse_geocode?
    params[:location] = query.coordinates.reverse.join(',')
  else
    params[:text] = query.sanitized_text
  end
  params.merge(super)
end

def results(query)

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?)
    return [ doc ]
  else
    return []
  end
end