Sha256: 601b99845ba69d34072b14da0ecd37f05b0517f256f3c65a0e1f2011c30c2cbd
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
module Geokit module Geocoders # Provides geocoding based upon an IP address. The underlying web service is geoplugin.net class RipeGeocoder < BaseIpGeocoder private def self.do_geocode(ip) return GeoLoc.new unless valid_ip?(ip) url = "http://stat.ripe.net/data/geoloc/data.json?resource=#{ip}" res = call_geocoder_service(url) return GeoLoc.new if !res.is_a?(Net::HTTPSuccess) parse :json, res.body end def self.parse_json(json) loc = GeoLoc.new data = json['data']['locations'][0] loc.provider='RIPE' loc.lat = data['latitude'] loc.lng = data['longitude'] set_address_components(data, loc) loc.success = (data['status_code'] == 200) loc end def self.set_address_components(data, loc) match = data['country'].match /([A-Z]+)(\(([A-Z]+)\))?/ if match[3] loc.state = match[1] loc.country_code = match[3] else loc.country_code = match[1] end loc.city = data['city'] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
geokit-1.8.1 | lib/geokit/geocoders/ripe.rb |
geokit-1.8.0 | lib/geokit/geocoders/ripe.rb |