class Geocoder::Lookup::Maxmind

def name

def name
  "MaxMind"
end

def parse_raw_data(raw_data)

def parse_raw_data(raw_data)
  CSV.parse_line raw_data
end

def query_url(query)

def query_url(query)
  "#{protocol}://geoip.maxmind.com/#{service_code}?" + url_query_string(query)
end

def query_url_params(query)

def query_url_params(query)
  {
    :l => configuration.api_key,
    :i => query.sanitized_text
  }.merge(super)
end

def reserved_result

def reserved_result
  ",,,,0,0,0,0,,,"
end

def results(query)

def results(query)
  # don't look up a loopback address, just return the stored result
  return [reserved_result] if query.loopback_ip_address?
  doc = fetch_data(query)
  if doc and doc.is_a?(Array)
    if doc.last.nil?
      return [doc]
    elsif doc.last == "INVALID_LICENSE_KEY"
      raise_error(Geocoder::InvalidApiKey) || warn("Invalid MaxMind API key.")
    end
  end
  return []
end

def service_code

def service_code
  if s = configuration[:service] and services.keys.include?(s)
    services[s]
  else
    raise(
      Geocoder::ConfigurationError,
      "When using MaxMind you MUST specify a service name: " +
      "Geocoder.configure(:maxmind => {:service => ...}), " +
      "where '...' is one of: #{services.keys.inspect}"
    )
  end
end

def services


Service names mapped to code used in URL.
#
def services
  {
    :country => "a",
    :city => "b",
    :city_isp_org => "f",
    :omni => "e"
  }
end