user_reviews 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ff626384a6cb904aa7c49f45af2b1ae4cc342923
4
+ data.tar.gz: 46304c6ec33cabbf82c818da12da07aa99276728
5
+ SHA512:
6
+ metadata.gz: 2234932b7f9db9beb2a9c3df359d6060326a4a5d0a54fb7a0a757c2832c9f814be2f51a5e31bcb7ddc5e6942c28f9ee1d0bb4090f4ae08ca97dd30fff5dff2e9
7
+ data.tar.gz: a499b86c787fc89871dc0803ec8402ab5c5fb3ac9d897f5f22fc6033ca1de51ddb7fcf58db5bef39b6dedfd23f156e9510e6ed036c51984d7308a83853fbf56b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- user_reviews (0.0.8)
4
+ user_reviews (0.0.10)
5
5
  activesupport (~> 3.2.11)
6
6
  httparty
7
7
  json
@@ -16,14 +16,14 @@ GEM
16
16
  multi_json (~> 1.0)
17
17
  coderay (1.0.8)
18
18
  diff-lcs (1.1.3)
19
- httparty (0.10.2)
19
+ httparty (0.11.0)
20
20
  multi_json (~> 1.0)
21
21
  multi_xml (>= 0.5.2)
22
- i18n (0.6.4)
22
+ i18n (0.6.1)
23
23
  json (1.7.7)
24
24
  method_source (0.8.1)
25
- multi_json (1.6.1)
26
- multi_xml (0.5.2)
25
+ multi_json (1.8.0)
26
+ multi_xml (0.5.5)
27
27
  oauth (0.4.7)
28
28
  pry (0.9.11.4)
29
29
  coderay (~> 1.0.5)
@@ -46,9 +46,9 @@ module Providers
46
46
 
47
47
  def parse_business_results(json)
48
48
  result = []
49
- return result if json.nil? || json["results"].nil?
49
+ return result if json.nil? || json.parsed_response.nil? || json.parsed_response["results"].nil?
50
50
 
51
- json = json["results"] || []
51
+ json = json.parsed_response["results"]
52
52
  json["locations"].each do |e|
53
53
  result.push(Providers::Citysearch::Business.build_business(e))
54
54
  end
@@ -1,22 +1,31 @@
1
1
  module Providers
2
2
  module Citysearch
3
3
  class Business
4
- attr_accessor :name, :address, :reference, :average_rating, :total_reviews
4
+ attr_accessor :name, :address, :reference, :average_rating, :total_reviews, :url
5
5
 
6
6
  def self.build_business(node)
7
- return nil if [node["name"], node["address"], node["review_info"], node["id"]].include?(nil)
7
+ return nil if node.nil? ||
8
+ node["name"].nil? ||
9
+ node["address"].nil? ||
10
+ node["user_review_count"].nil? ||
11
+ node["id"].nil? ||
12
+ node["rating"].nil? ||
13
+ node["profile"].nil?
14
+
8
15
  new(node)
9
16
  end
10
17
 
11
18
  private
12
19
 
13
20
  def initialize(node)
21
+
14
22
  @name = node["name"]
15
23
  full_address = node["address"]
16
24
  @address = [full_address["street"], full_address["city"], full_address["state"], full_address["postal_code"]].join(" ")
17
25
  @reference = node["id"]
18
- @total_reviews = node['review_info']['total_user_reviews']
19
- @average_rating = node['review_info']['overall_review_rating']
26
+ @total_reviews = node["user_review_count"]
27
+ @url = node["profile"]
28
+ @average_rating = node["rating"]
20
29
  end
21
30
  end
22
31
  end
@@ -52,10 +52,7 @@ module Providers
52
52
 
53
53
  def parse_businesses(business_list)
54
54
  result = []
55
- return result if business_list.nil? ||
56
- business_list.empty? ||
57
- business_list["location"].nil? ||
58
- business_list["location"]["display_address"].nil?
55
+ return result if business_list.nil? || business_list.empty?
59
56
 
60
57
  business_list.each do |business|
61
58
  result.push(Providers::Yelp::Business.build_business(business))
@@ -1,28 +1,31 @@
1
1
  module Providers
2
2
  module Yelp
3
3
  class Business
4
- attr_accessor :name, :address, :yelp_id, :average_rating, :total_reviews
4
+ attr_accessor :name, :address, :yelp_id, :average_rating, :total_reviews, :url
5
5
 
6
6
  def self.build_business(node)
7
- return nil if [node["location"], node["rating"], node["id"]].include?(nil)
7
+ return nil if node.nil? ||
8
+ node["location"].nil? ||
9
+ node["location"].empty? ||
10
+ node["location"]["display_address"].nil? ||
11
+ node["rating"].nil? ||
12
+ node["url"].nil? ||
13
+ node["name"].nil? ||
14
+ node["review_count"].nil? ||
15
+ node["id"].nil?
16
+
8
17
  new(node)
9
18
  end
10
19
 
11
20
  private
12
21
 
13
22
  def initialize(node)
14
- return if [node,
15
- node["location"],
16
- node["location"]["display_address"],
17
- node["rating"],
18
- node["review_count"],
19
- node["id"]].include?(nil)
20
-
21
23
  @address = node["location"]["display_address"].join(" ")
22
24
  @name = node["name"]
23
25
  @average_rating = node["rating"]
24
26
  @total_reviews = node["review_count"]
25
27
  @yelp_id = node["id"]
28
+ @url = node["url"]
26
29
  end
27
30
  end
28
31
  end
@@ -1,3 +1,3 @@
1
1
  module UserReviews
2
- VERSION = "0.0.9".freeze
2
+ VERSION = "0.0.10".freeze
3
3
  end
@@ -3,18 +3,18 @@ require 'spec_helper'
3
3
  describe Providers::Citysearch::Business do
4
4
  describe "#initialize" do
5
5
  let(:address) { {"street" => '', "city" => '', "state" => '', "postal_code" => '' } }
6
- let(:node) do
7
- {
8
- "name" => '',
9
- "address" => address,
10
- "id" => stub,
11
- "rating" => stub,
12
- "review_info" => {}
13
- }
14
- end
15
6
 
16
7
  context "when required fields are not present" do
17
- let(:node) { Hash.new(nil) }
8
+ let(:node) do
9
+ {
10
+ "name" => '',
11
+ "address" => address,
12
+ "id" => stub,
13
+ "rating" => stub,
14
+ "review_info" => {}
15
+ }
16
+ end
17
+
18
18
  it "returns nil" do
19
19
  biz = Providers::Citysearch::Business.build_business(node)
20
20
  biz.should be_nil
@@ -22,6 +22,17 @@ describe Providers::Citysearch::Business do
22
22
  end
23
23
 
24
24
  context "when required fields are present" do
25
+ let(:node) do
26
+ {
27
+ "name" => '',
28
+ "address" => address,
29
+ "id" => stub,
30
+ "rating" => stub,
31
+ "user_review_count" => stub,
32
+ "profile" => stub
33
+ }
34
+ end
35
+
25
36
  it "returns an Bussiness object" do
26
37
  Providers::Citysearch::Business.build_business(node).should be
27
38
  end
@@ -2,16 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  describe Providers::Yelp::Business do
4
4
  describe "#initialize" do
5
- let(:node) do
6
- {
7
- "location" => '',
8
- "rating" => '',
9
- "id" => stub,
10
- }
11
- end
12
-
13
5
  context "when required fields are not present" do
14
- let(:node) { Hash.new(nil) }
6
+ let(:node) do
7
+ {
8
+ "location" => {},
9
+ "rating" => '',
10
+ "id" => stub,
11
+ }
12
+ end
13
+
15
14
  it "returns nil" do
16
15
  biz = Providers::Yelp::Business.build_business(node)
17
16
  biz.should be_nil
@@ -19,6 +18,17 @@ describe Providers::Yelp::Business do
19
18
  end
20
19
 
21
20
  context "when required fields are present" do
21
+ let(:node) do
22
+ {
23
+ "location" => { "display_address" => ["City", "Zip"] },
24
+ "rating" => stub,
25
+ "name" => stub,
26
+ "url" => stub,
27
+ "review_count" => stub,
28
+ "id" => stub,
29
+ }
30
+ end
31
+
22
32
  it "returns an Bussiness object" do
23
33
  Providers::Yelp::Business.build_business(node).should be
24
34
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_reviews
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
5
- prerelease:
4
+ version: 0.0.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Unpakt LLC
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-26 00:00:00.000000000 Z
11
+ date: 2013-10-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,65 +27,57 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: httparty
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: oauth
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: json
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Wrapper for mulitple user review APIs
@@ -99,7 +88,6 @@ extensions: []
99
88
  extra_rdoc_files: []
100
89
  files:
101
90
  - .gitignore
102
- - .pairs
103
91
  - .rspec
104
92
  - Gemfile
105
93
  - Gemfile.lock
@@ -110,79 +98,52 @@ files:
110
98
  - lib/providers/citysearch/api.rb
111
99
  - lib/providers/citysearch/business.rb
112
100
  - lib/providers/citysearch/review.rb
113
- - lib/providers/citysearch_reviews/business.rb
114
- - lib/providers/citysearch_reviews/review.rb
115
- - lib/providers/citysearch_reviews_api.rb
116
101
  - lib/providers/google/api.rb
117
102
  - lib/providers/google/business.rb
118
103
  - lib/providers/google/review.rb
119
- - lib/providers/google_reviews/business.rb
120
- - lib/providers/google_reviews/review.rb
121
- - lib/providers/google_reviews_api.rb
122
104
  - lib/providers/yelp/api.rb
123
105
  - lib/providers/yelp/business.rb
124
106
  - lib/providers/yelp/review.rb
125
- - lib/providers/yelp_reviews/business.rb
126
- - lib/providers/yelp_reviews/review.rb
127
- - lib/providers/yelp_reviews_api.rb
128
107
  - lib/user_reviews.rb
129
108
  - lib/user_reviews/version.rb
130
- - scripts/uploadgem.sh
131
109
  - spec/providers/citysearch/api_spec.rb
132
110
  - spec/providers/citysearch/business_spec.rb
133
- - spec/providers/citysearch_reviews/business_spec.rb
134
- - spec/providers/citysearch_reviews_api_spec.rb
135
111
  - spec/providers/google/api_spec.rb
136
112
  - spec/providers/google/business_spec.rb
137
- - spec/providers/google_reviews/business_spec.rb
138
- - spec/providers/google_reviews_api_spec.rb
139
113
  - spec/providers/yelp/api_spec.rb
140
114
  - spec/providers/yelp/business_spec.rb
141
- - spec/providers/yelp_reviews/business_spec.rb
142
- - spec/providers/yelp_reviews_api_spec.rb
143
115
  - spec/spec_helper.rb
144
116
  - spec/user_reviews_spec.rb
145
- - user_reviews-0.0.1.gem
146
- - user_reviews-0.0.2.gem
147
- - user_reviews-0.0.3.gem
148
- - user_reviews-0.0.4.gem
149
117
  - user_reviews.gemspec
150
118
  homepage: http://www.unpakt.com
151
119
  licenses: []
120
+ metadata: {}
152
121
  post_install_message:
153
122
  rdoc_options: []
154
123
  require_paths:
155
124
  - lib
156
125
  required_ruby_version: !ruby/object:Gem::Requirement
157
- none: false
158
126
  requirements:
159
- - - ! '>='
127
+ - - '>='
160
128
  - !ruby/object:Gem::Version
161
129
  version: '0'
162
130
  required_rubygems_version: !ruby/object:Gem::Requirement
163
- none: false
164
131
  requirements:
165
- - - ! '>='
132
+ - - '>='
166
133
  - !ruby/object:Gem::Version
167
134
  version: '0'
168
135
  requirements: []
169
136
  rubyforge_project:
170
- rubygems_version: 1.8.24
137
+ rubygems_version: 2.0.3
171
138
  signing_key:
172
- specification_version: 3
139
+ specification_version: 4
173
140
  summary: Wrapper for mulitple user review APIs
174
141
  test_files:
175
142
  - spec/providers/citysearch/api_spec.rb
176
143
  - spec/providers/citysearch/business_spec.rb
177
- - spec/providers/citysearch_reviews/business_spec.rb
178
- - spec/providers/citysearch_reviews_api_spec.rb
179
144
  - spec/providers/google/api_spec.rb
180
145
  - spec/providers/google/business_spec.rb
181
- - spec/providers/google_reviews/business_spec.rb
182
- - spec/providers/google_reviews_api_spec.rb
183
146
  - spec/providers/yelp/api_spec.rb
184
147
  - spec/providers/yelp/business_spec.rb
185
- - spec/providers/yelp_reviews/business_spec.rb
186
- - spec/providers/yelp_reviews_api_spec.rb
187
148
  - spec/spec_helper.rb
188
149
  - spec/user_reviews_spec.rb
data/.pairs DELETED
@@ -1,8 +0,0 @@
1
- pairs:
2
- et: Elie Toubiana; elie
3
- rn: Richard Nuno; richard
4
- jn: John Negron; john.negron
5
- pt: Paul Tower; paul.towere
6
- email:
7
- prefix: dev
8
- domain: unpakt.com
@@ -1,23 +0,0 @@
1
- module Providers
2
- module CitysearchReviews
3
- class Business
4
- attr_accessor :name, :address, :reference, :average_rating, :total_reviews
5
-
6
- def self.build_business(node)
7
- return nil if [node["name"], node["address"], node["review_info"], node["id"]].include?(nil)
8
- new(node)
9
- end
10
-
11
- private
12
-
13
- def initialize(node)
14
- @name = node["name"]
15
- full_address = node["address"]
16
- @address = [full_address["street"], full_address["city"], full_address["state"], full_address["postal_code"]].join(" ")
17
- @reference = node["id"]
18
- @total_reviews = node['review_info']['total_user_reviews']
19
- @average_rating = node['review_info']['overall_review_rating']
20
- end
21
- end
22
- end
23
- end
@@ -1,16 +0,0 @@
1
- require 'date'
2
-
3
- module Providers
4
- module CitysearchReviews
5
- class Review
6
- attr_accessor :rating, :author_name, :reviewed_at, :comment
7
-
8
- def initialize(node)
9
- @rating = node["review_rating"]
10
- @author_name = node["review_author"]
11
- @reviewed_at = DateTime.parse(node["review_date"]).to_time
12
- @comment = node["review_text"]
13
- end
14
- end
15
- end
16
- end
@@ -1,72 +0,0 @@
1
- require 'httparty'
2
- require 'open-uri'
3
-
4
-
5
- module Providers
6
- class CitysearchReviewsApi
7
- LOCALHOST_IP = "127.0.0.1"
8
- def initialize(options)
9
- @key = options[:publisher_key]
10
- @ip = options[:client_ip] || LOCALHOST_IP
11
- end
12
-
13
- def find_business_by_name(name, business_type, city_state)
14
- request_url = business_search_url(name, business_type, city_state)
15
- json_results = HTTParty.get(request_url)
16
- parse_business_results(json_results)
17
- end
18
-
19
- def find_business_by_id(citysearch_id)
20
- request_url = business_url(citysearch_id)
21
- json_results = HTTParty.get(request_url)
22
- json = json_results["locations"] || []
23
-
24
- return json if json.empty?
25
- Providers::CitysearchReviews::Business.build_business(json.first)
26
- end
27
-
28
- def find_reviews_for_business(citysearch_id)
29
- request_url = reviews_url(citysearch_id)
30
- json_results = HTTParty.get(request_url)
31
- parse_reviews_results(json_results)
32
- end
33
-
34
- private
35
-
36
- def business_url(citysearch_id)
37
- "http://api.citygridmedia.com/content/places/v2/detail?publisher=#{@key}&id=#{citysearch_id}&id_type=cs&client_ip=127.0.0.1&format=json"
38
- end
39
-
40
- def business_search_url(name, business_type = "", city_state)
41
- "http://api.citygridmedia.com/content/places/v2/search/where?where=#{URI::encode(city_state)}&what=#{URI::encode(name)}&publisher=#{@key}&format=json"
42
- end
43
-
44
- def reviews_url(citysearch_id)
45
- "http://api.citygridmedia.com/content/reviews/v2/search/where?listing_id=#{citysearch_id}&publisher=#{@key}&format=json"
46
- end
47
-
48
- def parse_business_results(json)
49
- result = []
50
- return result if json.nil? || json["results"].nil?
51
-
52
- json = json["results"] || []
53
- json["locations"].each do |e|
54
- result.push(Providers::CitysearchReviews::Business.build_business(e))
55
- end
56
-
57
- result
58
- end
59
-
60
- def parse_reviews_results(json)
61
- result = []
62
- return result if json.nil? || json["results"].nil?
63
-
64
- json = json["results"] || []
65
- json["reviews"].each do |e|
66
- result.push(Providers::CitysearchReviews::Review.new(e))
67
- end
68
-
69
- result
70
- end
71
- end
72
- end
@@ -1,21 +0,0 @@
1
- module Providers
2
- module GoogleReviews
3
- class Business
4
- attr_accessor :name, :address, :reference, :average_rating, :url
5
-
6
- def self.build_business(node)
7
- return nil if [node["name"], node["formatted_address"], node["reference"]].include?(nil)
8
- new(node)
9
- end
10
-
11
- private
12
- def initialize(node)
13
- @name = node["name"]
14
- @address = node["formatted_address"]
15
- @reference = node["reference"]
16
- @average_rating = node["rating"]
17
- @url = node["url"]
18
- end
19
- end
20
- end
21
- end
@@ -1,24 +0,0 @@
1
- module Providers
2
- module GoogleReviews
3
- class Review
4
- attr_accessor :rating, :author_name, :reviewed_at, :comment
5
-
6
- def initialize(node)
7
- @rating = average_rating(node["aspects"])
8
- @author_name = node["author_name"]
9
- @reviewed_at = Time.at(node["time"].to_i)
10
- @comment = node["text"]
11
- end
12
-
13
- private
14
-
15
- def average_rating(arr)
16
- return 0 if arr.nil? || arr.size < 1
17
-
18
- sum = 0
19
- arr.each { |el| sum += el["rating"].to_f }
20
- sum.to_f / arr.size
21
- end
22
- end
23
- end
24
- end
@@ -1,73 +0,0 @@
1
- require 'httparty'
2
- require 'open-uri'
3
-
4
- module Providers
5
- class GoogleReviewsApi
6
- class ExceededQueryLimitError < StandardError; end
7
-
8
- def initialize(options)
9
- @key = options[:key]
10
- end
11
-
12
- def find_business_by_name(name, business_type, city_state = "")
13
- request_url = business_url(name, business_type)
14
- @json_results = HTTParty.get(request_url)
15
- parse_business_results(@json_results)
16
- end
17
-
18
- def find_reviews_for_business(ref)
19
- request_url = reviews_url(ref)
20
- @json_results = HTTParty.get(request_url)
21
- parse_reviews_results(@json_results)
22
- end
23
-
24
- def find_business_by_id(google_id)
25
- request_url = reviews_url(google_id)
26
- @json_results = HTTParty.get(request_url)
27
- return @json_results if @json_results.nil?
28
-
29
- json = @json_results["result"]
30
- return json if json.nil?
31
-
32
- Providers::GoogleReviews::Business.build_business(json)
33
- end
34
-
35
- private
36
-
37
- def query_limit_has_been_reached?
38
- @json_results["status"] == 'OVER_QUERY_LIMIT'
39
- end
40
-
41
- def business_url(business_name, business_type)
42
- "https://maps.googleapis.com/maps/api/place/textsearch/json?key=#{@key}&query=#{URI::encode(business_name)}=&sensor=false&type=#{URI::encode(business_type)}"
43
- end
44
-
45
- def reviews_url(reference)
46
- "https://maps.googleapis.com/maps/api/place/details/json?key=#{@key}&reference=#{reference}&sensor=false"
47
- end
48
-
49
- def parse_business_results(json)
50
- raise ExceededQueryLimitError if query_limit_has_been_reached?
51
-
52
- result = []
53
- return result if json.nil? || json["results"].nil?
54
-
55
- json["results"].each do |e|
56
- result.push(Providers::GoogleReviews::Business.build_business(e))
57
- end
58
-
59
- result
60
- end
61
-
62
- def parse_reviews_results(json)
63
- result = []
64
- return result if json.nil? || json["result"].nil? || json["result"]["reviews"].nil?
65
-
66
- json["result"]["reviews"].each do |e|
67
- result.push(Providers::GoogleReviews::Review.new(e))
68
- end
69
-
70
- result
71
- end
72
- end
73
- end
@@ -1,29 +0,0 @@
1
- module Providers
2
- module YelpReviews
3
- class Business
4
- attr_accessor :name, :address, :yelp_id, :average_rating, :total_reviews
5
-
6
- def self.build_business(node)
7
- return nil if [node["location"], node["rating"], node["id"]].include?(nil)
8
- new(node)
9
- end
10
-
11
- private
12
-
13
- def initialize(node)
14
- return if [node,
15
- node["location"],
16
- node["location"]["display_address"],
17
- node["rating"],
18
- node["review_count"],
19
- node["id"]].include?(nil)
20
-
21
- @address = node["location"]["display_address"].join(" ")
22
- @name = node["name"]
23
- @average_rating = node["rating"]
24
- @total_reviews = node["review_count"]
25
- @yelp_id = node["id"]
26
- end
27
- end
28
- end
29
- end
@@ -1,14 +0,0 @@
1
- module Providers
2
- module YelpReviews
3
- class Review
4
- attr_accessor :rating, :author_name, :reviewed_at, :comment
5
-
6
- def initialize(node)
7
- @rating = node["rating"]
8
- @author_name = node["name"]
9
- @reviewed_at = Time.at(node["time_created"].to_i)
10
- @comment = node["excerpt"]
11
- end
12
- end
13
- end
14
- end
@@ -1,81 +0,0 @@
1
- require 'oauth'
2
- require 'json'
3
- require 'open-uri'
4
-
5
- module Providers
6
- class YelpReviewsApi
7
-
8
- def initialize(options)
9
- @consumer_key = options[:consumer_key]
10
- @consumer_secret = options[:consumer_secret]
11
- @token = options[:token]
12
- @token_secret = options[:token_secret]
13
- end
14
-
15
- def find_business_by_name(name, business_type, city_state)
16
- access_token = create_oauth_token
17
- response = JSON.parse(access_token.get(business_path(name, business_type, city_state)).body)
18
- parse_businesses(response["businesses"])
19
- end
20
-
21
- def find_reviews_for_business(yelp_id)
22
- access_token = create_oauth_token
23
- response = JSON.parse(access_token.get(review_path(yelp_id)).body)
24
- parse_reviews(response["reviews"])
25
- end
26
-
27
- def find_business_by_id(yelp_id)
28
- access_token = create_oauth_token
29
- response = JSON.parse(access_token.get(review_path(yelp_id)).body)
30
- Providers::YelpReviews::Business.build_business(response) if response &&
31
- response["location"] &&
32
- response["location"]["display_address"]
33
-
34
- end
35
-
36
- private
37
-
38
- def create_oauth_token
39
- consumer_key = @consumer_key
40
- consumer_secret = @consumer_secret
41
- token = @token
42
- token_secret = @token_secret
43
-
44
- consumer = OAuth::Consumer.new(consumer_key, consumer_secret, site: "http://api.yelp.com")
45
- OAuth::AccessToken.new(consumer, token, token_secret)
46
- end
47
-
48
- def business_path(name, business_type, city_state)
49
- "/v2/search?term=#{URI::encode(name)}&category_filter=#{URI::encode(business_type)}&location=#{URI::encode(city_state)}"
50
- end
51
-
52
- def review_path(yelp_id)
53
- "/v2/business/#{yelp_id}"
54
- end
55
-
56
- def parse_businesses(business_list)
57
- result = []
58
- return result if business_list.nil? ||
59
- business_list.empty? ||
60
- business_list["location"].nil? ||
61
- business_list["location"]["display_address"].nil?
62
-
63
- business_list.each do |business|
64
- result.push(Providers::YelpReviews::Business.build_business(business))
65
- end
66
-
67
- result
68
- end
69
-
70
- def parse_reviews(review_list)
71
- result = []
72
- return result if review_list.nil?
73
-
74
- review_list.each do |review|
75
- result.push(Providers::YelpReviews::Review.new(review))
76
- end
77
-
78
- result
79
- end
80
- end
81
- end
data/scripts/uploadgem.sh DELETED
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
-
3
- gem build user_reviews.gemspec
4
-
5
- latest_gem_file=`ls -r1 *.gem | head -1`
6
-
7
- curl -F p1="@$latest_gem_file" https://gems.gemfury.com/MF3AiwyUX36qby4yxhkn/
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::CitysearchReviews::Business do
4
- describe "#initialize" do
5
- let(:address) { {"street" => '', "city" => '', "state" => '', "postal_code" => '' } }
6
- let(:node) do
7
- {
8
- "name" => '',
9
- "address" => address,
10
- "id" => stub,
11
- "rating" => stub,
12
- "review_info" => {}
13
- }
14
- end
15
-
16
- context "when required fields are not present" do
17
- let(:node) { Hash.new(nil) }
18
- it "returns nil" do
19
- biz = Providers::CitysearchReviews::Business.build_business(node)
20
- biz.should be_nil
21
- end
22
- end
23
-
24
- context "when required fields are present" do
25
- it "returns an Bussiness object" do
26
- Providers::CitysearchReviews::Business.build_business(node).should be
27
- end
28
- end
29
-
30
- end
31
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::CitysearchReviewsApi do
4
- before do
5
- end
6
-
7
- describe "#initialize" do
8
- it "initializes a new CitySearch provider" do
9
- Providers::CitysearchReviewsApi.new(publisher_key: "").should be
10
- end
11
- end
12
-
13
- describe "#find_business_by_name" do
14
- let(:json_result) { { "address" => {} } }
15
- let(:business_url) { "http://www.example.com" }
16
- let(:citysearch_wrapper) { Providers::CitysearchReviewsApi.new(key: "") }
17
- let(:query_result) { [Providers::CitysearchReviews::Business.build_business(json_result)] }
18
-
19
- it "returns an array of possible businesses" do
20
- citysearch_wrapper.should_receive(:business_search_url).with("Unpakt", "moving company", "NY,NY") { business_url }
21
- HTTParty.should_receive(:get).with(business_url) { json_result }
22
- citysearch_wrapper.should_receive(:parse_business_results).with(json_result) { query_result }
23
-
24
- citysearch_wrapper.find_business_by_name("Unpakt", "moving company", "NY,NY").should eq query_result
25
- end
26
- end
27
-
28
-
29
- describe "#find_reviews_for_business" do
30
- let(:citysearch_id) { stub }
31
- let(:json_result) { {"review_date" => "2007-03-07T21:53:41.000Z"} }
32
- let(:reviews_url) { "http://www.example.com" }
33
- let(:citysearch_wrapper) { Providers::CitysearchReviewsApi.new(key: "") }
34
- let(:query_result) { [Providers::CitysearchReviews::Review.new(json_result)] }
35
-
36
- it "returns the rating for a given entity" do
37
- citysearch_wrapper.should_receive(:reviews_url).with(citysearch_id) { reviews_url }
38
- HTTParty.should_receive(:get).with(reviews_url) { json_result }
39
- citysearch_wrapper.should_receive(:parse_reviews_results).with(json_result) { query_result }
40
-
41
- citysearch_wrapper.find_reviews_for_business(citysearch_id).should eq query_result
42
- end
43
- end
44
- end
@@ -1,30 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::GoogleReviews::Business do
4
- describe "#initialize" do
5
- let(:node) do
6
- {
7
- "name" => '',
8
- "formatted_address" => '',
9
- "reference" => stub,
10
- "url" => stub,
11
- "rating" => stub
12
- }
13
- end
14
-
15
- context "when required fields are not present" do
16
- let(:node) { Hash.new(nil) }
17
- it "returns nil" do
18
- biz = Providers::GoogleReviews::Business.build_business(node)
19
- biz.should be_nil
20
- end
21
- end
22
-
23
- context "when required fields are present" do
24
- it "returns an Bussiness object" do
25
- Providers::GoogleReviews::Business.build_business(node).should be
26
- end
27
- end
28
-
29
- end
30
- end
@@ -1,56 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::GoogleReviewsApi do
4
- before do
5
- end
6
-
7
- describe "#initialize" do
8
- it "initializes a new GoogleReviews provider" do
9
- Providers::GoogleReviewsApi.new(key: "").should be
10
- end
11
- end
12
-
13
- describe "#find_business_by_name" do
14
- let(:json_result) { "{}" }
15
- let(:business_url) { "http://www.example.com" }
16
- let(:google_wrapper) { Providers::GoogleReviewsApi.new(key: "") }
17
- let(:query_result) { [Providers::GoogleReviews::Business.build_business(json_result)] }
18
-
19
- context "when the api is valid" do
20
- it "returns an array of possible businesses" do
21
- google_wrapper.should_receive(:business_url).with("Unpakt", "moving_company") { business_url }
22
- HTTParty.should_receive(:get).with(business_url) { json_result }
23
- google_wrapper.should_receive(:parse_business_results).with(json_result) { query_result }
24
-
25
- google_wrapper.find_business_by_name("Unpakt", "moving_company").should eq query_result
26
- end
27
- end
28
-
29
- context "when the api query limit is reached" do
30
- let(:json_result) { {'status' => 'OVER_QUERY_LIMIT'} }
31
-
32
- it "raises an error" do
33
- google_wrapper.should_receive(:business_url).with("Unpakt", "moving_company") { business_url }
34
- HTTParty.should_receive(:get).with(business_url) { json_result }
35
- lambda { google_wrapper.find_business_by_name("Unpakt", "moving_company") }.should raise_error Providers::GoogleReviewsApi::ExceededQueryLimitError
36
- end
37
- end
38
- end
39
-
40
- describe "#find_reviews_for_business" do
41
- let(:reference) { stub }
42
- let(:json_result) { "{}" }
43
- let(:reviews_url) { "http://www.example.com" }
44
- let(:google_wrapper) { Providers::GoogleReviewsApi.new(key: "") }
45
- let(:query_result) { [Providers::GoogleReviews::Review.new(json_result)] }
46
-
47
- it "returns the rating for a given entity" do
48
- google_wrapper.should_receive(:reviews_url).with(reference) { reviews_url }
49
- HTTParty.should_receive(:get).with(reviews_url) { json_result }
50
- google_wrapper.should_receive(:parse_reviews_results).with(json_result) { query_result }
51
-
52
- google_wrapper.find_reviews_for_business(reference).should eq query_result
53
- end
54
- end
55
-
56
- end
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::YelpReviews::Business do
4
- describe "#initialize" do
5
- let(:node) do
6
- {
7
- "location" => '',
8
- "rating" => '',
9
- "id" => stub,
10
- }
11
- end
12
-
13
- context "when required fields are not present" do
14
- let(:node) { Hash.new(nil) }
15
- it "returns nil" do
16
- biz = Providers::YelpReviews::Business.build_business(node)
17
- biz.should be_nil
18
- end
19
- end
20
-
21
- context "when required fields are present" do
22
- it "returns an Bussiness object" do
23
- Providers::YelpReviews::Business.build_business(node).should be
24
- end
25
- end
26
-
27
- end
28
- end
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Providers::YelpReviewsApi do
4
- before do
5
- end
6
-
7
- describe "#initialize" do
8
- it "initializes a new GoogleReviews provider" do
9
- Providers::YelpReviewsApi.new(consumer_key: "",
10
- consumer_secret: "",
11
- token: "",
12
- token_secret: "").should be
13
- end
14
- end
15
-
16
- describe "#find_business_by_name" do
17
- let(:token) { stub }
18
- let(:api_result) { stub }
19
- let(:response_body) { stub }
20
- let(:business_path) { "super_path" }
21
- let(:business_place) do
22
- {"location" => {"display_address" => ["1 Place", "NY"]}}
23
- end
24
- let(:json_result) {{"businesses" => business_places }}
25
- let(:business_places) { [business_place] }
26
- let(:yelp_wrapper) { Providers::YelpReviewsApi.new({}) }
27
- let(:query_result) { [Providers::YelpReviews::Business.build_business(business_place)] }
28
-
29
- it "returns an array of possible businesses" do
30
- yelp_wrapper.should_receive(:create_oauth_token) { token }
31
- yelp_wrapper.should_receive(:business_path).with("Unpakt", "movers", "NY,NY") { business_path }
32
- token.should_receive(:get).with(business_path) { api_result }
33
- api_result.should_receive(:body) { response_body }
34
-
35
-
36
- JSON.should_receive(:parse).with(response_body) { json_result }
37
- yelp_wrapper.should_receive(:parse_businesses).with(business_places) { query_result }
38
-
39
- yelp_wrapper.find_business_by_name("Unpakt", "movers", "NY,NY").should eq query_result
40
- end
41
- end
42
-
43
-
44
- describe "#find_reviews_for_business" do
45
- let(:token) { stub }
46
- let(:api_result) { stub }
47
- let(:response_body) { stub }
48
- let(:review_path) { "super_path" }
49
- let(:review) {{"rating" => 1}}
50
- let(:reviews) { [review] }
51
- let(:json_result) {{"reviews" => reviews }}
52
- let(:yelp_wrapper) { Providers::YelpReviewsApi.new({}) }
53
- let(:query_result) { [Providers::YelpReviews::Review.new(review)] }
54
-
55
- it "returns an array of possible businesses" do
56
- yelp_wrapper.should_receive(:create_oauth_token) { token }
57
- yelp_wrapper.should_receive(:review_path).with("yelp-Unpakt") { review_path }
58
- token.should_receive(:get).with(review_path) { api_result }
59
- api_result.should_receive(:body) { response_body }
60
-
61
-
62
- JSON.should_receive(:parse).with(response_body) { json_result }
63
- yelp_wrapper.should_receive(:parse_reviews).with(reviews) { query_result }
64
-
65
- yelp_wrapper.find_reviews_for_business("yelp-Unpakt").should eq query_result
66
- end
67
- end
68
- end
Binary file
Binary file
Binary file
Binary file