lib/geocoder/lookups/db_ip_com.rb
require 'geocoder/lookups/base'
require 'geocoder/results/db_ip_com'
module Geocoder::Lookup
class DbIpCom < Base
def name
'DB-IP.com'
end
def supported_protocols
[:https, :http]
end
def required_api_key_parts
['api_key']
end
private # ----------------------------------------------------------------
def base_query_url(query)
"#{protocol}://api.db-ip.com/v2/#{configuration.api_key}/#{query.sanitized_text}?"
end
##
# Same as query_url but without the api key.
#
def cache_key(query)
"#{protocol}://api.db-ip.com/v2/#{query.sanitized_text}?" + hash_to_query(cache_key_params(query))
end
def results(query)
return [] unless (doc = fetch_data(query))
case doc['error']
when 'maximum number of queries per day exceeded'
raise_error Geocoder::OverQueryLimitError ||
Geocoder.log(:warn, 'DB-API query limit exceeded.')
when 'invalid API key'
raise_error Geocoder::InvalidApiKey ||
Geocoder.log(:warn, 'Invalid DB-IP API key.')
when nil
[doc]
else
raise_error Geocoder::Error ||
Geocoder.log(:warn, "Request failed: #{doc['error']}")
end
end
end
end