Sha256: 733928bc5e85630d3fd084dd471cd2749b1773927c25b67e62fce8f95be1e133

Contents?: true

Size: 973 Bytes

Versions: 3

Compression:

Stored size: 973 Bytes

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)
        process :json, ip
      end

      def self.submit_url(ip)
        "http://stat.ripe.net/data/geoloc/data.json?resource=#{ip}"
      end

      def self.parse_json(json)
        loc = new_loc
        data = json['data']['locations'][0]

        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

3 entries across 3 versions & 1 rubygems

Version Path
geokit-1.8.4 lib/geokit/geocoders/ripe.rb
geokit-1.8.3 lib/geokit/geocoders/ripe.rb
geokit-1.8.2 lib/geokit/geocoders/ripe.rb