rentjuicer 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +50 -0
  6. data/VERSION +1 -0
  7. data/lib/rentjuicer/client.rb +15 -0
  8. data/lib/rentjuicer/error.rb +17 -0
  9. data/lib/rentjuicer/lead.rb +21 -0
  10. data/lib/rentjuicer/listing.rb +57 -0
  11. data/lib/rentjuicer/listings.rb +86 -0
  12. data/lib/rentjuicer/neighborhoods.rb +16 -0
  13. data/lib/rentjuicer/response.rb +35 -0
  14. data/lib/rentjuicer.rb +13 -0
  15. data/spec/rentjuicer/client_spec.rb +17 -0
  16. data/spec/rentjuicer/error_spec.rb +17 -0
  17. data/spec/rentjuicer/lead_spec.rb +55 -0
  18. data/spec/rentjuicer/listing_spec.rb +97 -0
  19. data/spec/rentjuicer/listings_spec.rb +124 -0
  20. data/spec/rentjuicer/neighborhoods_spec.rb +30 -0
  21. data/spec/rentjuicer/response_spec.rb +51 -0
  22. data/spec/rentjuicer_api_key.yml.example +1 -0
  23. data/spec/responses/error.json +6 -0
  24. data/spec/responses/featured.json +431 -0
  25. data/spec/responses/find_all_1.json +1211 -0
  26. data/spec/responses/find_all_2.json +1294 -0
  27. data/spec/responses/find_all_3.json +808 -0
  28. data/spec/responses/find_all_by_ids.json +1249 -0
  29. data/spec/responses/find_all_by_ids_2.json +186 -0
  30. data/spec/responses/find_by_id.json +128 -0
  31. data/spec/responses/lead.json +8 -0
  32. data/spec/responses/lead_error.json +6 -0
  33. data/spec/responses/listings.json +1301 -0
  34. data/spec/responses/neighborhoods.json +227 -0
  35. data/spec/spec.opts +1 -0
  36. data/spec/spec_helper.rb +12 -0
  37. data/spec/support/listing_helper.rb +126 -0
  38. data/spec/support/webmock_helper.rb +24 -0
  39. metadata +161 -0
@@ -0,0 +1,227 @@
1
+ {
2
+ "status": "ok",
3
+ "count": 44,
4
+ "neighborhoods": [
5
+ {
6
+ "rentjuice_id": 51,
7
+ "name": "Admirals Hill",
8
+ "active_listings": 1
9
+ },
10
+ {
11
+ "rentjuice_id": 5,
12
+ "name": "Allston",
13
+ "active_listings": 0
14
+ },
15
+ {
16
+ "rentjuice_id": 759,
17
+ "name": "Arlington",
18
+ "active_listings": 0
19
+ },
20
+ {
21
+ "rentjuice_id": 12,
22
+ "name": "Back Bay",
23
+ "active_listings": 183
24
+ },
25
+ {
26
+ "rentjuice_id": 27,
27
+ "name": "Bay Village",
28
+ "active_listings": 11
29
+ },
30
+ {
31
+ "rentjuice_id": 9,
32
+ "name": "Beacon Hill",
33
+ "active_listings": 51
34
+ },
35
+ {
36
+ "rentjuice_id": 19,
37
+ "name": "Boston",
38
+ "active_listings": 351
39
+ },
40
+ {
41
+ "rentjuice_id": 10,
42
+ "name": "Brighton",
43
+ "active_listings": 1
44
+ },
45
+ {
46
+ "rentjuice_id": 4,
47
+ "name": "Brookline",
48
+ "active_listings": 30
49
+ },
50
+ {
51
+ "rentjuice_id": 6,
52
+ "name": "Cambridge",
53
+ "active_listings": 94
54
+ },
55
+ {
56
+ "rentjuice_id": 11,
57
+ "name": "Charlestown",
58
+ "active_listings": 26
59
+ },
60
+ {
61
+ "rentjuice_id": 31,
62
+ "name": "Chelsea",
63
+ "active_listings": 0
64
+ },
65
+ {
66
+ "rentjuice_id": 22,
67
+ "name": "Chestnut Hill",
68
+ "active_listings": 0
69
+ },
70
+ {
71
+ "rentjuice_id": 47,
72
+ "name": "Chinatown",
73
+ "active_listings": 2
74
+ },
75
+ {
76
+ "rentjuice_id": 57,
77
+ "name": "Cleveland Circle",
78
+ "active_listings": 1
79
+ },
80
+ {
81
+ "rentjuice_id": 15,
82
+ "name": "Dorchester",
83
+ "active_listings": 6
84
+ },
85
+ {
86
+ "rentjuice_id": 21,
87
+ "name": "Downtown",
88
+ "active_listings": 11
89
+ },
90
+ {
91
+ "rentjuice_id": 26,
92
+ "name": "East Boston",
93
+ "active_listings": 2
94
+ },
95
+ {
96
+ "rentjuice_id": 1,
97
+ "name": "Fenway",
98
+ "active_listings": 95
99
+ },
100
+ {
101
+ "rentjuice_id": 1007,
102
+ "name": "Financial District",
103
+ "active_listings": 11
104
+ },
105
+ {
106
+ "rentjuice_id": 50,
107
+ "name": "Harvard Square",
108
+ "active_listings": 1
109
+ },
110
+ {
111
+ "rentjuice_id": 13,
112
+ "name": "Jamaica Plain",
113
+ "active_listings": 0
114
+ },
115
+ {
116
+ "rentjuice_id": 2,
117
+ "name": "Kenmore",
118
+ "active_listings": 35
119
+ },
120
+ {
121
+ "rentjuice_id": 983,
122
+ "name": "Leather District",
123
+ "active_listings": 1
124
+ },
125
+ {
126
+ "rentjuice_id": 28,
127
+ "name": "Longwood",
128
+ "active_listings": 11
129
+ },
130
+ {
131
+ "rentjuice_id": 40,
132
+ "name": "Malden",
133
+ "active_listings": 5
134
+ },
135
+ {
136
+ "rentjuice_id": 36,
137
+ "name": "Medford",
138
+ "active_listings": 15
139
+ },
140
+ {
141
+ "rentjuice_id": 7,
142
+ "name": "Midtown",
143
+ "active_listings": 43
144
+ },
145
+ {
146
+ "rentjuice_id": 25,
147
+ "name": "Mission Hill",
148
+ "active_listings": 4
149
+ },
150
+ {
151
+ "rentjuice_id": 29,
152
+ "name": "Newton",
153
+ "active_listings": 1
154
+ },
155
+ {
156
+ "rentjuice_id": 14,
157
+ "name": "North End",
158
+ "active_listings": 47
159
+ },
160
+ {
161
+ "rentjuice_id": 41,
162
+ "name": "North Shore",
163
+ "active_listings": 17
164
+ },
165
+ {
166
+ "rentjuice_id": 43,
167
+ "name": "Roslindale",
168
+ "active_listings": 1
169
+ },
170
+ {
171
+ "rentjuice_id": 16,
172
+ "name": "Seaport",
173
+ "active_listings": 10
174
+ },
175
+ {
176
+ "rentjuice_id": 23,
177
+ "name": "Somerville",
178
+ "active_listings": 4
179
+ },
180
+ {
181
+ "rentjuice_id": 20,
182
+ "name": "South Boston",
183
+ "active_listings": 17
184
+ },
185
+ {
186
+ "rentjuice_id": 8,
187
+ "name": "South End",
188
+ "active_listings": 63
189
+ },
190
+ {
191
+ "rentjuice_id": 3,
192
+ "name": "Symphony",
193
+ "active_listings": 48
194
+ },
195
+ {
196
+ "rentjuice_id": 33,
197
+ "name": "Theatre District",
198
+ "active_listings": 2
199
+ },
200
+ {
201
+ "rentjuice_id": 18,
202
+ "name": "Waterfront",
203
+ "active_listings": 3
204
+ },
205
+ {
206
+ "rentjuice_id": 34,
207
+ "name": "Watertown",
208
+ "active_listings": 0
209
+ },
210
+ {
211
+ "rentjuice_id": 24,
212
+ "name": "West End",
213
+ "active_listings": 62
214
+ },
215
+ {
216
+ "rentjuice_id": 30,
217
+ "name": "West Roxbury",
218
+ "active_listings": 1
219
+ },
220
+ {
221
+ "rentjuice_id": 44,
222
+ "name": "Winthrop",
223
+ "active_listings": 0
224
+ }
225
+ ],
226
+ "runtime": 0.036
227
+ }
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rentjuicer'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+ require 'webmock/rspec'
7
+
8
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
9
+
10
+ Spec::Runner.configure do |config|
11
+ config.include WebMock
12
+ end
@@ -0,0 +1,126 @@
1
+ def valid_listing_rash
2
+ Hashie::Rash.new({
3
+ "rentjuice_id" => 200306,
4
+ "title" => "HUGE 3BR ACROSS FROM BEACH AVAIL 9/15, PARKING AVAILABLE TOO",
5
+ "description" => "Columbia Rd 2nd floor unit available for rent 9/15 or 10/1. Across from M street beach! Spacious unit with 2 decks, dining room, living room, 3 good sized BRs, all new kitchen appliances, dishwasher and stove, brand new w/d in unit, large pantry, rental parking avail (2 spots), newly painted, hardwoods were just refinished. Owner occupied (no college students), easy to show, email to set up today.",
6
+ "agent_name" => "Lindsay Guittarr",
7
+ "agent_email" => "lguittarr@bradvisors.com",
8
+ "agent_phone" => "603-512-3263",
9
+ "featured" => 0,
10
+ "address" => "1744 Columbia Rd, Unit 2",
11
+ "street_number" => 1744,
12
+ "street" => "Columbia Rd",
13
+ "unit_number" => 2,
14
+ "cross_street" => nil,
15
+ "latitude" => 42.3304,
16
+ "longitude" => -71.0327,
17
+ "neighborhoods" => [
18
+ "South Boston", "South End"
19
+ ],
20
+ "floor_number" => 2,
21
+ "property_type" => "Multi-Family House",
22
+ "rent" => 2500,
23
+ "fee" => 0,
24
+ "bedrooms" => 3,
25
+ "bathrooms" => 1,
26
+ "square_footage" => nil,
27
+ "features" => [
28
+ "Dining room",
29
+ "Dishwasher",
30
+ "Hardwood floors",
31
+ "Patio or deck",
32
+ "Refrigerator",
33
+ "Washer/dryer in unit"
34
+ ],
35
+ "rental_terms" => nil,
36
+ "date_available" => "2010-09-15",
37
+ "last_updated" => "2010-08-25 15 =>45 =>56",
38
+ "photos" => [
39
+ {
40
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008823.jpg",
41
+ "sort_order" => 2,
42
+ "main_photo" => false,
43
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008825.jpg"
44
+ },
45
+ {
46
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008806.jpg",
47
+ "sort_order" => 3,
48
+ "main_photo" => false,
49
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008803.jpg"
50
+ },
51
+ {
52
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008804.jpg",
53
+ "sort_order" => 6,
54
+ "main_photo" => false,
55
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008799.jpg"
56
+ },
57
+ {
58
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008802.jpg",
59
+ "sort_order" => 5,
60
+ "main_photo" => false,
61
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008810.jpg"
62
+ },
63
+ {
64
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008797.jpg",
65
+ "sort_order" => 4,
66
+ "main_photo" => false,
67
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008821.jpg"
68
+ },
69
+ {
70
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008760.jpg",
71
+ "sort_order" => 1,
72
+ "main_photo" => true,
73
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008757.jpg"
74
+ }
75
+ ],
76
+ "custom_fields" => [
77
+ {
78
+ "name" => "Virtual Tour",
79
+ "type" => "text",
80
+ "value" => nil
81
+ }
82
+ ],
83
+ "url" => "http://app.rentjuice.com/listings/200306"
84
+ })
85
+ end
86
+
87
+ def sorted_photos_array
88
+ [
89
+ Hashie::Rash.new({
90
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008760.jpg",
91
+ "sort_order" => 1,
92
+ "main_photo" => true,
93
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008757.jpg"
94
+ }),
95
+ Hashie::Rash.new({
96
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008823.jpg",
97
+ "sort_order" => 2,
98
+ "main_photo" => false,
99
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008825.jpg"
100
+ }),
101
+ Hashie::Rash.new({
102
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008806.jpg",
103
+ "sort_order" => 3,
104
+ "main_photo" => false,
105
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008803.jpg"
106
+ }),
107
+ Hashie::Rash.new({
108
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008797.jpg",
109
+ "sort_order" => 4,
110
+ "main_photo" => false,
111
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008821.jpg"
112
+ }),
113
+ Hashie::Rash.new({
114
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008802.jpg",
115
+ "sort_order" => 5,
116
+ "main_photo" => false,
117
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008810.jpg"
118
+ }),
119
+ Hashie::Rash.new({
120
+ "thumbnail" => "http://static.rentjuice.com/frames/2010/08/25/3008804.jpg",
121
+ "sort_order" => 6,
122
+ "main_photo" => false,
123
+ "fullsize" => "http://static.rentjuice.com/frames/2010/08/25/3008799.jpg"
124
+ })
125
+ ]
126
+ end
@@ -0,0 +1,24 @@
1
+ RENTJUICER_API_KEY = YAML.load_file(File.join(File.dirname(__FILE__), '/../rentjuicer_api_key.yml'))["api_key"]
2
+
3
+ def new_rentjuicer
4
+ Rentjuicer::Client.new(RENTJUICER_API_KEY)
5
+ end
6
+
7
+ def mock_get(resource, response_fixture, params = {})
8
+ url = "http://app.rentjuice.com/api/#{RENTJUICER_API_KEY}#{resource}"
9
+ unless params.blank?
10
+ stub_http_request(:get, url).with(:query => params).to_return(:body => mocked_response(response_fixture))
11
+ else
12
+ stub_http_request(:get, url).to_return(:body => mocked_response(response_fixture))
13
+ end
14
+ end
15
+
16
+ def mocked_response(response_fixture)
17
+ File.read(File.join(File.dirname(__FILE__), '/../responses', response_fixture))
18
+ end
19
+
20
+ def httparty_get(resource, response_fixture, params = {})
21
+ url = "http://app.rentjuice.com/api/#{RENTJUICER_API_KEY}#{resource}"
22
+ mock_get(resource, response_fixture, params)
23
+ HTTParty.get url, :format => :json
24
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rentjuicer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - tcocca
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-08-30 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.6.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashie
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.3.1
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rash
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.1.1
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: will_paginate
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.3.4
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.2.9
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: webmock
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.3.4
74
+ version:
75
+ description: Ruby API wrapper for rentjuice.com built with httparty
76
+ email: tom.cocca@gmail.com
77
+ executables: []
78
+
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - LICENSE
83
+ - README.rdoc
84
+ files:
85
+ - .document
86
+ - .gitignore
87
+ - LICENSE
88
+ - README.rdoc
89
+ - Rakefile
90
+ - VERSION
91
+ - lib/rentjuicer.rb
92
+ - lib/rentjuicer/client.rb
93
+ - lib/rentjuicer/error.rb
94
+ - lib/rentjuicer/lead.rb
95
+ - lib/rentjuicer/listing.rb
96
+ - lib/rentjuicer/listings.rb
97
+ - lib/rentjuicer/neighborhoods.rb
98
+ - lib/rentjuicer/response.rb
99
+ - spec/rentjuicer/client_spec.rb
100
+ - spec/rentjuicer/error_spec.rb
101
+ - spec/rentjuicer/lead_spec.rb
102
+ - spec/rentjuicer/listing_spec.rb
103
+ - spec/rentjuicer/listings_spec.rb
104
+ - spec/rentjuicer/neighborhoods_spec.rb
105
+ - spec/rentjuicer/response_spec.rb
106
+ - spec/rentjuicer_api_key.yml.example
107
+ - spec/responses/error.json
108
+ - spec/responses/featured.json
109
+ - spec/responses/find_all_1.json
110
+ - spec/responses/find_all_2.json
111
+ - spec/responses/find_all_3.json
112
+ - spec/responses/find_all_by_ids.json
113
+ - spec/responses/find_all_by_ids_2.json
114
+ - spec/responses/find_by_id.json
115
+ - spec/responses/lead.json
116
+ - spec/responses/lead_error.json
117
+ - spec/responses/listings.json
118
+ - spec/responses/neighborhoods.json
119
+ - spec/spec.opts
120
+ - spec/spec_helper.rb
121
+ - spec/support/listing_helper.rb
122
+ - spec/support/webmock_helper.rb
123
+ has_rdoc: true
124
+ homepage: http://github.com/tcocca/rentjuicer
125
+ licenses: []
126
+
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --charset=UTF-8
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: "0"
137
+ version:
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: "0"
143
+ version:
144
+ requirements: []
145
+
146
+ rubyforge_project:
147
+ rubygems_version: 1.3.5
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: ruby api wrapper for rentjuice
151
+ test_files:
152
+ - spec/rentjuicer/client_spec.rb
153
+ - spec/rentjuicer/error_spec.rb
154
+ - spec/rentjuicer/lead_spec.rb
155
+ - spec/rentjuicer/listing_spec.rb
156
+ - spec/rentjuicer/listings_spec.rb
157
+ - spec/rentjuicer/neighborhoods_spec.rb
158
+ - spec/rentjuicer/response_spec.rb
159
+ - spec/spec_helper.rb
160
+ - spec/support/listing_helper.rb
161
+ - spec/support/webmock_helper.rb