Class: TruliaAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/trulia_api.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key) ⇒ TruliaAPI

Returns a new instance of TruliaAPI.



5
6
7
# File 'lib/trulia_api.rb', line 5

def initialize(api_key)
  @api_key = api_key
end

Instance Method Details

#get_cities(state) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/trulia_api.rb', line 22

def get_cities(state)
  cities = {}
  cities_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getCitiesInState&state=#{state}&apikey=#{@api_key}"))
  cities_in_state_xml.css("city").each do |city|
    cities[city.css("name").text.downcase] = {
      state: state,
      zillow_id: city.css("cityid").text.to_i,
      longitude: city.css("longitude").text.to_d,
      latitude: city.css("latitude").text.to_d
    }
  end
  return cities
end

#get_city_stats(city, state, startdate, enddate) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/trulia_api.rb', line 73

def get_city_stats(city, state, startdate, enddate)
  city_stats = {}
  city_stats_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=TruliaStats&function=getCityStats&city=#{CGI::escape(city)}&state=#{state}&startDate=#{startdate}&endDate=#{enddate}&apikey=#{@api_key}"))

  city_stats_xml.css("listingstat").each do |listingstat|
    weekend_date = listingstat.css("weekendingdate").text.downcase
    listingstat.css("subcategory").each do |subcategory|
        city_stats = {weekend_date => {
          subcategory.css("type").text.downcase => {
            properties:           subcategory.css("numberofproperties").text,
            medianlistingprice:   subcategory.css("medianlistingprice").text,
            averagelistingprice:  subcategory.css("averagelistingprice").text
        }}}
    end
  end
  return "THIS IS NOT READY YET"
  #return city_stats
end

#get_counties(state) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/trulia_api.rb', line 49

def get_counties(state)
  counties = {}
  counties_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getCountiesInState&state=#{state}&apikey=#{@api_key}"))
  counties_in_state_xml.css("county").each do |county|
    counties[county.css("name").text.downcase] = {
      zillow_id: county.css("countyid").text.to_i,
      longitude: county.css("longitude").text.to_d,
      latitude: county.css("latitude").text.to_d
    }
  end
  return counties
end

#get_neighborhoods(city, state) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/trulia_api.rb', line 62

def get_neighborhoods(city, state)
  neighborhoods = {}
  neighborhoods_in_city_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getNeighborhoodsInCity&city=#{CGI::escape(city)}&state=#{state}&apikey=#{@api_key}"))
  neighborhoods_in_city_xml.css("neighborhood").each do |neighborhood|
    neighborhoods[neighborhood.css("name").text.downcase] = {
      zillow_id: neighborhood.css("id").text.to_i,
    }
  end
  return neighborhoods
end

#get_state_stats(city, state, startdate, enddate) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/trulia_api.rb', line 92

def get_state_stats(city, state, startdate, enddate)
  city_stats = {}
  city_stats_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=TruliaStats&function=getCityStats&city=#{CGI::escape(city)}&state=#{state}&startDate=#{startdate}&endDate=#{enddate}&apikey=#{@api_key}"))

  city_stats_xml.css("listingstat").each do |listingstat|
    weekend_date = listingstat.css("weekendingdate").text.downcase
    listingstat.css("subcategory").each do |subcategory|
        city_stats = {weekend_date => {
          subcategory.css("type").text.downcase => {
            properties:           subcategory.css("numberofproperties").text,
            medianlistingprice:   subcategory.css("medianlistingprice").text,
            averagelistingprice:  subcategory.css("averagelistingprice").text
        }}}
    end
  end
  return puts "THIS IS NOT READY YET"
  #return city_stats
end

#get_statesObject



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/trulia_api.rb', line 9

def get_states
  states = {}
  states_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getStates&apikey=#{@api_key}"))
  states_xml.css("state").each do |state|
    states[state.css("name").text.downcase] = {
      abbreviation: state.css("statecode").text.downcase,
      longitude: state.css("longitude").text.to_d,
      latitude: state.css("latitude").text.to_d
    }
  end
  states
end

#get_zip_codes(state) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/trulia_api.rb', line 36

def get_zip_codes(state)
  zips = {}
  zip_codes_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getZipCodesInState&state=#{state}&apikey=#{@api_key}"))
  zip_codes_in_state_xml.css("zipcode").each do |zip|
    zips[zip.css("name").text.downcase] = {
      state: state,
      longitude: zip.css("longitude").text.to_d,
      latitude: zip.css("latitude").text.to_d
    }
  end
  return zips
end