Sha256: 86fef098d6452458bf2560e7eac394efef903dd1e733ac00bbb1925fd88f1655
Contents?: true
Size: 956 Bytes
Versions: 2
Compression:
Stored size: 956 Bytes
Contents
module Geokit module Geocoders # Provides geocoding based upon an IP address. The underlying web service is freegeoip.net class FreeGeoIpGeocoder < BaseIpGeocoder private def self.do_geocode(ip) return GeoLoc.new unless valid_ip?(ip) url = "http://freegeoip.net/xml/#{ip}" res = call_geocoder_service(url) return GeoLoc.new if !res.is_a?(Net::HTTPSuccess) parse :xml, res.body end XML_MAPPINGS = { :city => 'City', :state => 'RegionCode', :zip => 'ZipCode', :country_code => 'CountryCode', :lat => 'Latitude', :lng => 'Longitude' } def self.parse_xml(xml) loc = GeoLoc.new loc.provider = 'freegeoip' set_mappings(loc, xml.elements['Response'], XML_MAPPINGS) loc.success = !!loc.city && !loc.city.empty? loc end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
geokit-1.8.1 | lib/geokit/geocoders/free_geo_ip.rb |
geokit-1.8.0 | lib/geokit/geocoders/free_geo_ip.rb |