class Terragona::GeoNames::API

Constants

URL

Public Class Methods

new(args = {}) click to toggle source
Calls superclass method Terragona::GeoNames::Base::new
# File lib/terragona/geonames.rb, line 77
def initialize(args = {})
  super
  @username = args[:geonames_username]
  cache_expiration_time = args[:cache_expiration_time] || 7200
  @cache = Diskcached.new('/tmp/cache',cache_expiration_time,true)
  @use_cache = args[:use_cache]
end

Public Instance Methods

fetch_geonames(name,country,admin_code_type,admin_code) click to toggle source
# File lib/terragona/geonames.rb, line 85
def fetch_geonames(name,country,admin_code_type,admin_code)
  admin_code_str = admin_code ? "&#{admin_code_type}=#{admin_code}" : ''
  name_str = name ? "q=#{name}&" : ''

  if @use_cache
    @cache.cache("geonames_name=#{name}&country=#{country}#{admin_code_str}&full666") do
      request(name_str,country,admin_code_str)
    end
  else
    request(name_str,country,admin_code_str)
  end
end
request(name_str,country,admin_code_str) click to toggle source
# File lib/terragona/geonames.rb, line 98
def request(name_str,country,admin_code_str)
  url = URI.escape(%Q{#{URL}?#{name_str}country=#{country}#{admin_code_str}&style=FULL&order_by=relevance&maxRows=1000&username=#{@username}})
  request = HTTPI::Request.new(url)
  data = HTTPI.get(request)
  JSON.parse(data.body,:symbolize_names=>true)[:geonames]
end