lib/geokit/geocoders/maxmind.rb
module Geokit
module Geocoders
# Provides geocoding based upon an IP address. The underlying web service is MaxMind
class MaxmindGeocoder < Geocoder
config :geoip_data_path # path to GeoLiteCity.dat
private
def self.do_geocode(ip, _=nil)
res = GeoIP.new(geoip_data_path).city(ip)
loc = new_loc
loc.lat = res.latitude
loc.lng = res.longitude
loc.city = res.city_name
loc.state = res.region_name
loc.zip = res.postal_code
loc.country_code = res.country_code2
loc.success = (res.longitude.is_a?(Numeric) && res.latitude.is_a?(Numeric))
loc
end
end
end
end