trulia_api 1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/trulia_api.rb +111 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1fe899c03f5ede8c974386bcf6a7715e2e4196c1
4
+ data.tar.gz: b9a52a21f2a85b43fa4ff8a1a2d60edf214782e4
5
+ SHA512:
6
+ metadata.gz: ed8cc29fa05a8af85848a80a819ecae70ab28c3daa631dfc659a5e9deefaef0e1613cbf2a9c1a0a022a8f5f0118f88df9895e0158559ae22db5323efc1240fcd
7
+ data.tar.gz: 2fa66de5a790a8e6671614155de9fef98297f36cb3e3c996c4c6faecc14098204ac572e55ec04f6b3b399aa01c88252e165471ef773d0a6f470b16cf2b4d24fa
data/lib/trulia_api.rb ADDED
@@ -0,0 +1,111 @@
1
+ class TruliaAPI
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+
5
+ def initialize(api_key)
6
+ @api_key = api_key
7
+ end
8
+
9
+ def get_states
10
+ states = {}
11
+ states_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getStates&apikey=#{@api_key}"))
12
+ states_xml.css("state").each do |state|
13
+ states[state.css("name").text.downcase] = {
14
+ abbreviation: state.css("statecode").text.downcase,
15
+ longitude: state.css("longitude").text.to_d,
16
+ latitude: state.css("latitude").text.to_d
17
+ }
18
+ end
19
+ states
20
+ end
21
+
22
+ def get_cities(state)
23
+ cities = {}
24
+ cities_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getCitiesInState&state=#{state}&apikey=#{@api_key}"))
25
+ cities_in_state_xml.css("city").each do |city|
26
+ cities[city.css("name").text.downcase] = {
27
+ state: state,
28
+ zillow_id: city.css("cityid").text.to_i,
29
+ longitude: city.css("longitude").text.to_d,
30
+ latitude: city.css("latitude").text.to_d
31
+ }
32
+ end
33
+ return cities
34
+ end
35
+
36
+ def get_zip_codes(state)
37
+ zips = {}
38
+ zip_codes_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getZipCodesInState&state=#{state}&apikey=#{@api_key}"))
39
+ zip_codes_in_state_xml.css("zipcode").each do |zip|
40
+ zips[zip.css("name").text.downcase] = {
41
+ state: state,
42
+ longitude: zip.css("longitude").text.to_d,
43
+ latitude: zip.css("latitude").text.to_d
44
+ }
45
+ end
46
+ return zips
47
+ end
48
+
49
+ def get_counties(state)
50
+ counties = {}
51
+ counties_in_state_xml = Nokogiri::HTML(open("http://api.trulia.com/webservices.php?library=LocationInfo&function=getCountiesInState&state=#{state}&apikey=#{@api_key}"))
52
+ counties_in_state_xml.css("county").each do |county|
53
+ counties[county.css("name").text.downcase] = {
54
+ zillow_id: county.css("countyid").text.to_i,
55
+ longitude: county.css("longitude").text.to_d,
56
+ latitude: county.css("latitude").text.to_d
57
+ }
58
+ end
59
+ return counties
60
+ end
61
+
62
+ def get_neighborhoods(city, state)
63
+ neighborhoods = {}
64
+ 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}"))
65
+ neighborhoods_in_city_xml.css("neighborhood").each do |neighborhood|
66
+ neighborhoods[neighborhood.css("name").text.downcase] = {
67
+ zillow_id: neighborhood.css("id").text.to_i,
68
+ }
69
+ end
70
+ return neighborhoods
71
+ end
72
+
73
+ def get_city_stats(city, state, startdate, enddate)
74
+ city_stats = {}
75
+ 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}"))
76
+
77
+ city_stats_xml.css("listingstat").each do |listingstat|
78
+ weekend_date = listingstat.css("weekendingdate").text.downcase
79
+ listingstat.css("subcategory").each do |subcategory|
80
+ city_stats = {weekend_date => {
81
+ subcategory.css("type").text.downcase => {
82
+ properties: subcategory.css("numberofproperties").text,
83
+ medianlistingprice: subcategory.css("medianlistingprice").text,
84
+ averagelistingprice: subcategory.css("averagelistingprice").text
85
+ }}}
86
+ end
87
+ end
88
+ return "THIS IS NOT READY YET"
89
+ #return city_stats
90
+ end
91
+
92
+ def get_state_stats(city, state, startdate, enddate)
93
+ city_stats = {}
94
+ 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}"))
95
+
96
+ city_stats_xml.css("listingstat").each do |listingstat|
97
+ weekend_date = listingstat.css("weekendingdate").text.downcase
98
+ listingstat.css("subcategory").each do |subcategory|
99
+ city_stats = {weekend_date => {
100
+ subcategory.css("type").text.downcase => {
101
+ properties: subcategory.css("numberofproperties").text,
102
+ medianlistingprice: subcategory.css("medianlistingprice").text,
103
+ averagelistingprice: subcategory.css("averagelistingprice").text
104
+ }}}
105
+ end
106
+ end
107
+ return puts "THIS IS NOT READY YET"
108
+ #return city_stats
109
+ end
110
+
111
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trulia_api
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.3'
5
+ platform: ruby
6
+ authors:
7
+ - Ben Freeman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Gem for interfacing with Trulias API
14
+ email: benfreeman@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/trulia_api.rb
20
+ homepage: http://rubygems.org/gems/trulia_api
21
+ licenses:
22
+ - MIT
23
+ metadata:
24
+ github: https://github.com/benfreeman/trulia_api
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.4.5
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: TruliaAPI
45
+ test_files: []