class Rubillow::Neighborhood

Interface for the Neighborhood API.

Read the more about this API at: {www.zillow.com/webtools/neighborhood-data/}

Public Class Methods

demographics(options = {}) click to toggle source

Retrieve demographic data for a given region.

Read more at: {www.zillow.com/howto/api/GetDemographics.htm}.

* At least regionid or state/city, city/neighborhood, or zip options are required.

@example

data = Rubillow::Neighborhood.demographics({ :state => 'WA', :city => 'Seattle', :neighborhood => 'Ballard' })

if data.success?
  puts data.charts['Median Condo Value']
  puts data.affordability_data['Zillow Home Value Index'][:neighborhood]
  data.characteristics.each do |stat|
    stat
  end
end

@param [Hash] options The options for the API request. @option options [String] :regionid The id of the region (required *) @option options [String] :state The state of the region (required *) @option options [String] :city The city of the region (required *) @option options [String] :neighborhood The neighborhood of the region (required *) @option options [String] :zip The zopcode of the region (required *) @return [Models::Demographics] Region demographics data.

# File lib/rubillow/neighborhood.rb, line 30
def self.demographics(options = {})
  options = {
    :zws_id => Rubillow.configuration.zwsid,
    :regionid => nil,
    :state => nil,
    :city => nil,
    :neighborhood => nil,
    :zip => nil,
  }.merge!(options)

  if options[:regionid].nil? && options[:zip].nil? && (options[:state].nil? || options[:city].nil?) && (options[:city].nil? || options[:neighborhood].nil?)
    raise ArgumentError, "The regionid, state and city, city and neighborhood or zip option is required"
  end 

  Models::Demographics.new(Rubillow::Request.get("GetDemographics", options))
end
region_chart(options = {}) click to toggle source

Retrieve a chart for the specified region.

Read more at: {www.zillow.com/howto/api/GetRegionChart.htm}.

@example

chart = Rubillow::Neighborhood.chart({ :city => 'Seattle', :state => 'WA', :unit_type => 'percent', :width => 300, :height => 150 })

if chart.success?
  puts chart.to_html
end

@param [Hash] options The options for the API request. @option options [String] :city The city of the region @option options [String] :state The state of the region @option options [String] :neighborhood The county of the region @option options [String] :zip The zipcode of the region @option options [String] :unit-type Show the percent change (percent), or dollar change (dollar). (required) @option options [Integer] :width The width of the image; between 200 and 600, inclusive. @option options [Integer] :height The height of the image; between 100 and 300, inclusive. @option options [Integer] :chartDuration The duration of past data to show. Valid values are 1year, 5years and 10years. Defaults to 1year. @return [Models::RegionChart] Region chart.

# File lib/rubillow/neighborhood.rb, line 109
def self.region_chart(options = {})
  options = {
    :zws_id => Rubillow.configuration.zwsid,
    :city => nil,
    :state => nil,
    :neighborhood => nil,
    :zip => nil,
    :unit_type => nil,
    :width => nil,
    :height => nil,
    :chartDuration => nil,
  }.merge!(options)

  if options[:unit_type].nil?
    raise ArgumentError, "The unit_type option is required"
  end 

  Models::RegionChart.new(Rubillow::Request.get("GetRegionChart", options))
end
region_children(options = {}) click to toggle source

Retrieve sub-regions for a region

Read more at: {www.zillow.com/howto/api/GetRegionChildren.htm}.

* At least regionid or state options are required.

@example

data = Rubillow::Neighborhood.region_children({ :state => 'WA', :city => 'Seattle', :childtype => 'neighborhood' })

if data.success?
  puts data.region.id        # "16037"
  puts data.region.latitude  # "47.559364"
  data.regions.each do |region|
    puts region.id
  end
end

@param [Hash] options The options for the API request. @option options [String] :regionid The id of the region (required *) @option options [String] :state The state of the region (required *) @option options [String] :county The county of the region @option options [String] :city The city of the region @option options [String] :childType The type of regions to retrieve (available types: state, county, city, zipcode, and neighborhood) @return [Models::RegionChildren] Region children list.

# File lib/rubillow/neighborhood.rb, line 71
def self.region_children(options = {})
  options = {
    :zws_id => Rubillow.configuration.zwsid,
    :regionid => nil,
    :state => nil,
    :county => nil,
    :city => nil,
    :childtype => nil,
  }.merge!(options)

  if options[:regionid].nil? && options[:state].nil?
    raise ArgumentError, "The regionid or state option is required"
  end 

  Models::RegionChildren.new(Rubillow::Request.get("GetRegionChildren", options))
end