class NYTimesAPI::RealState

Constants

API_VERSION
BASE_URL
BUILDING_TYPES
GEO_SUMMARY_LEVELS
SUCCESS

Attributes

api_key[RW]
requests_count[RW]

Public Class Methods

enable_url_for(resource_type, query_type) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 15
def enable_url_for(resource_type, query_type)
  return "http://api.nytimes.com/svc/real-estate/#{API_VERSION}/#{resource_type}/#{query_type}/50.json?geo-extent-level=borough&"
end
new(api_key) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 22
def initialize(api_key)
  @api_key = api_key
  @requests_count = 0
end

Public Instance Methods

counts(location, options) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 27
def counts(location, options)
  base_url = RealState.enable_url_for("listings", "count")

  geo_summary_level = options[:geo_summary_level] || GEO_SUMMARY_LEVELS.first
  url = "#{base_url}geo-extent-value=#{location}&geo-summary-level=#{geo_summary_level}&date-range=#{options[:date]}&bedrooms=#{options[:bedrooms]}&building-type-id=#{options[:type]}&api-key=#{self.api_key}"

  json = NYTimesAPI::Util.get_json(url)
  self.requests_count += 1

  results = []

  if json["status"] == SUCCESS
    json["results"].each do |res|

      result_item = {
        borough: res["borough"],
        date_format: res["date_format"],
        date: res["date"],
        count: res["count"]
      }

      results.push result_item
    end
  end

  return results
end
percentiles(location, options={}) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 55
def percentiles(location, options={})
  base_url = RealState.enable_url_for("listings", "percentile")

  url = "#{base_url}geo-extent-value=#{location}&date-range=#{options[:date]}&bedrooms=#{options[:bedrooms]}&building-type-id=#{options[:type]}&api-key=#{self.api_key}"
  json = NYTimesAPI::Util.get_json(url)
  self.requests_count += 1

  results = []

  if json["status"] == SUCCESS
    json["results"].each do |res|

      result_item = {
        borough: res["borough"],
        date_format: res["date_format"],
        date: res["date"],
        percentile: res["percentile"],
        listing_price: res["listing_price"]
      }

      results.push result_item
    end
  end

  return results
end
sales_counts(location, options={}) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 111
def sales_counts(location, options={})
  base_url = RealState.enable_url_for("sales", "count")

  geo_summary_level = options[:geo_summary_level] || GEO_SUMMARY_LEVELS.first
  url = "#{base_url}geo-extent-value=#{location}&geo-summary-level=#{geo_summary_level}&date-range=#{options[:date]}&bedrooms=#{options[:bedrooms]}&building-type-id=#{options[:type]}&api-key=#{self.api_key}"

  json = NYTimesAPI::Util.get_json(url)
  self.requests_count += 1

  results = []

  if json["status"] == SUCCESS
    json["results"].each do |res|

      result_item = {
        neighborhood: res["neighborhood"],
        date_format: res["date_format"],
        date: res["date"],
        count: res["count"]
      }

      results.push result_item
    end
  end

  return results
end
sales_percentiles(location, options={}) click to toggle source
# File lib/NYTimesAPI/real_state.rb, line 82
def sales_percentiles(location, options={})
  base_url = RealState.enable_url_for("sales", "percentile")

  geo_summary_level = options[:geo_summary_level] || GEO_SUMMARY_LEVELS.first
  url = "#{base_url}geo-extent-value=#{location}&geo-summary-level=#{geo_summary_level}&date-range=#{options[:date]}&bedrooms=#{options[:bedrooms]}&building-type-id=#{options[:type]}&api-key=#{self.api_key}"

  json = NYTimesAPI::Util.get_json(url)
  self.requests_count += 1

  results = []

  if json["status"] == SUCCESS
    json["results"].each do |res|

      result_item = {
        zip: res["zip"],
        date_format: res["date_format"],
        date: res["date"],
        percentile: res["percentile"],
        sale_price: res["sale_price"]
      }

      results.push result_item
    end
  end

  return results
end