Sha256: 6bdf1c9663f9e150a19abfb8dd4d1e36467483edeeb995265e0c3ce46754cef8

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

require 'geocoder/lookups/base'
require 'geocoder/results/ip_address_labs'
require 'csv'

module Geocoder::Lookup
  class IpAddressLabs < Base

    def name
      "IpAddressLabs"
    end

    def query_url(query)
      "#{protocol}://api.ipaddresslabs.com/iplocation/v1.7/locateip?key=#{configuration[:api_key]}&ip=#{query}&format=JSON"
    end

    def reserved_result
      {
        "city"         => "New York",
        "region_code"  => "NY",
        "latitude"     => 40.7127837,
        "longitude"    => -74.0059413
      }
    end

    private # ---------------------------------------------------------------


    def results(query)
      # don't look up a loopback address, just return the stored result
      return [reserved_result] if query.loopback_ip_address?
      doc = fetch_data(query)
      status = doc["query_status"]["query_status_code"]
      message = doc["query_status"]["query_status_description"]

      if status == "OK"
        return [ doc["geolocation_data"] ]
      else
        warn("IP Address Labs API Error: #{message}")
        []
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bw-geocoder-1.2.6 lib/geocoder/lookups/ip_address_labs.rb
bw-geocoder-1.2.5 lib/geocoder/lookups/ip_address_labs.rb