class Geocoder::Lookup::Ipregistry

Constants

ERROR_CODES

Public Instance Methods

name() click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 17
def name
  "Ipregistry"
end
supported_protocols() click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 21
def supported_protocols
  [:https, :http]
end

Private Instance Methods

base_query_url(query) click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 27
def base_query_url(query)
  "#{protocol}://#{host}/#{query.sanitized_text}?"
end
cache_key(query) click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 31
def cache_key(query)
  query_url(query)
end
host() click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 35
def host
  configuration[:host] || "api.ipregistry.co"
end
query_url_params(query) click to toggle source
Calls superclass method
# File lib/geocoder/lookups/ipregistry.rb, line 39
def query_url_params(query)
  {
    key: configuration.api_key
  }.merge(super)
end
reserved_result(ip) click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 60
def reserved_result(ip)
  {
    "ip"           => ip,
    "country_name" => "Reserved",
    "country_code" => "RD"
  }
end
results(query) click to toggle source
# File lib/geocoder/lookups/ipregistry.rb, line 45
def results(query)
  # don't look up a loopback or private address, just return the stored result
  return [reserved_result(query.text)] if query.internal_ip_address?

  return [] unless (doc = fetch_data(query))

  if (error = doc['error'])
    code = error['code']
    msg = error['message']
    raise_error(ERROR_CODES[code], msg ) || Geocoder.log(:warn, "Ipregistry API error: #{msg}")
    return []
  end
  [doc]
end