user_reviews 0.0.9 → 0.0.10

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.
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