class Geokit::Geocoders::RipeGeocoder

Provides geocoding based upon an IP address. The underlying web service is geoplugin.net

Private Class Methods

do_geocode(ip) click to toggle source
# File lib/geokit/geocoders/ripe.rb, line 9
def self.do_geocode(ip)
  process :json, ip
end
parse_json(json) click to toggle source
# File lib/geokit/geocoders/ripe.rb, line 17
def self.parse_json(json)
  loc = new_loc
  data = json["data"]["locations"][0]

  if data
    loc.lat = data["latitude"]
    loc.lng = data["longitude"]
    set_address_components(data, loc)
    loc.success = data && (data["status_code"] == 200)
  end
  loc
end
set_address_components(data, loc) click to toggle source
# File lib/geokit/geocoders/ripe.rb, line 30
def self.set_address_components(data, loc)
  match = data["country"].match(/([A-Z]+)(\(([A-Z]+)\))?/)
  if match[3]
    loc.state_code = match[1]
    loc.country_code = match[3]
  else
    loc.country_code = match[1]
  end

  loc.city = data["city"]
end
submit_url(ip) click to toggle source
# File lib/geokit/geocoders/ripe.rb, line 13
def self.submit_url(ip)
  "#{protocol}://stat.ripe.net/data/geoloc/data.json?resource=#{ip}"
end