lib/geocoder/results/ipgeolocation.rb
require 'geocoder/results/base' module Geocoder::Result class Ipgeolocation < Base def coordinates [@data['latitude'].to_f, @data['longitude'].to_f] end def address(format = :full) "#{city}, #{state} #{postal_code}, #{country_name}".sub(/^[ ,]*/, "") end def state @data['state_prov'] end def state_code @data['state_prov'] end def country @data['country_name'] end def country_code @data['country_code2'] end def postal_code @data['zipcode'] end def self.response_attributes [ ['ip', ''], ['hostname', ''], ['continent_code', ''], ['continent_name', ''], ['country_code2', ''], ['country_code3', ''], ['country_name', ''], ['country_capital',''], ['district',''], ['state_prov',''], ['city', ''], ['zipcode', ''], ['time_zone', {}], ['currency', {}] ] end response_attributes.each do |attr, default| define_method attr do @data[attr] || default end end end end