Sha256: 392a7c115ea93d7eeb20abde07b0896a3698a2639a42fe364030876cd53ff6da

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

require "active_record"

class Ipligence::Client

  attr_reader :connection

  def initialize(opts)
    @connection = Ipligence::DBConnection.establish_connection(opts).connection
  end

  def data(ip)
    result = query(ip)

    {
      :ip_from => result["ip_from"],
      :ip_to => result["ip_to"],
      :country_code => result["country_code"],
      :country_name => result["country_name"],
      :continent_code => result["continent_code"],
      :continent_name => result["continent_name"],
      :time_zone => result["time_zone"],
      :region_code => result["region_code"],
      :region_name => result["region_name"],
      :owner => result["owner"],
      :city_name => result["city_name"],
      :county_name => result["county_name"],
      :post_code => result["post_code"],
      :area_code => result["area_code"],
      :metro_code => result["metro_code"],
      :latitude => result["latitude"],
      :longitude => result["longitude"]
    }
  end

  private
    def query(ip)
      long_ip = Ipligence::Utils.convert_dotted_to_long(ip).to_s
      data_fields = "ip_from, ip_to, country_code, country_name, continent_code, continent_name, time_zone, region_code, region_name, owner, city_name, county_name, post_code, area_code, metro_code, latitude, longitude"
      sql_query = "select #{data_fields} from ipligence2 where ip_from <= '#{long_ip}' and '#{long_ip}' <= ip_to"
      connection.exec_query(sql_query).first
    end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ipligence-0.0.7 lib/ipligence/client.rb