google_reviews 1.0.1 → 1.1.1
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/google_reviews/response.rb +18 -0
- data/lib/google_reviews/review.rb +22 -0
- data/lib/google_reviews/utils.rb +27 -13
- data/lib/google_reviews/version.rb +1 -1
- data/lib/google_reviews.rb +13 -13
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18e5a9dff07ce24f915090ed258356c3652f70aadb44942115d14b8e49504373
|
4
|
+
data.tar.gz: 28a08e8dee6488b27985aee1239646fd4625444db814638305e57f083e19831a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99ebab61a5641a91e3994cba74e10efb991646624e9ed0d1151c83b1fe51b25369134328ab1e2a3aaf3e70573f48c108c0e5db979ccd58b647ecfcc5cdc55d66
|
7
|
+
data.tar.gz: 619febead0a09e3cede3bbbffef2270b6b86316e1a41700511d00b9977e21354bfd76dbaf0079961e25df8f88d46361fb005ef2420d7f63bf3e83f03c8db2d9c
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GoogleReviews
|
4
|
+
# Response Object
|
5
|
+
class Response
|
6
|
+
attr_reader :status, :data, :error_message
|
7
|
+
|
8
|
+
def initialize(data: [], status: "OK", error: "")
|
9
|
+
@data = data
|
10
|
+
@status = status
|
11
|
+
@error = error
|
12
|
+
end
|
13
|
+
|
14
|
+
def success?
|
15
|
+
status == "OK"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GoogleReviews
|
4
|
+
# Google Review Object
|
5
|
+
class Review
|
6
|
+
attr_accessor :text, :time, :rating, :language, :author_url, :translated, :author_name,
|
7
|
+
:original_language, :profile_photo_url, :relative_time_description
|
8
|
+
|
9
|
+
def initialize(data)
|
10
|
+
@text = data["text"]
|
11
|
+
@time = data["time"]
|
12
|
+
@rating = data["rating"]
|
13
|
+
@language = data["language"]
|
14
|
+
@author_url = data["author_url"]
|
15
|
+
@translated = data["translated"]
|
16
|
+
@author_name = data["author_name"]
|
17
|
+
@original_language = data["original_language"]
|
18
|
+
@profile_photo_url = data["profile_photo_url"]
|
19
|
+
@relative_time_description = data["relative_time_description"]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/google_reviews/utils.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "google_reviews/review"
|
4
|
+
|
3
5
|
# GoogleReviews module
|
4
6
|
module GoogleReviews
|
5
7
|
# Various utility methods
|
@@ -13,28 +15,40 @@ module GoogleReviews
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def formatted_reviews_data(reviews)
|
18
|
+
return [] if reviews.nil? || reviews.empty?
|
19
|
+
|
16
20
|
reviews.map do |review|
|
17
|
-
|
18
|
-
text: review["text"],
|
19
|
-
time: review["time"],
|
20
|
-
rating: review["rating"],
|
21
|
-
language: review["language"],
|
22
|
-
author_url: review["author_url"],
|
23
|
-
translated: review["translated"],
|
24
|
-
author_name: review["author_name"],
|
25
|
-
original_language: review["original_language"],
|
26
|
-
profile_photo_url: review["profile_photo_url"],
|
27
|
-
relative_time_description: review["relative_time_description"],
|
28
|
-
}
|
21
|
+
Review.new(review)
|
29
22
|
end
|
30
23
|
end
|
31
24
|
|
25
|
+
def execute_place_name_request(url)
|
26
|
+
data = ApiRequest.execute(url)
|
27
|
+
|
28
|
+
raise ApiError, I18n.t("messages.search_place_api_error", exception: data["status"]) unless data["status"] == "OK"
|
29
|
+
|
30
|
+
data["results"]
|
31
|
+
end
|
32
|
+
|
33
|
+
def execute_place_id_request(url)
|
34
|
+
data = ApiRequest.execute(url)
|
35
|
+
|
36
|
+
error = I18n.t("messages.search_id_api_error", exception: data["status"])
|
37
|
+
return GoogleReviews::Response.new(status: data["status"], error: error) unless data["status"] == "OK"
|
38
|
+
|
39
|
+
reviews = data["result"]["reviews"]
|
40
|
+
return GoogleReviews::Response.new if reviews.nil? || reviews.empty?
|
41
|
+
|
42
|
+
GoogleReviews::Response.new(data: formatted_reviews_data(reviews))
|
43
|
+
end
|
44
|
+
|
32
45
|
private
|
33
46
|
|
34
47
|
def encoded_place_name(place_name)
|
35
48
|
URI.encode_www_form_component(place_name)
|
36
49
|
end
|
37
50
|
|
38
|
-
module_function :request_uri, :formatted_reviews_data, :encoded_place_name
|
51
|
+
module_function :request_uri, :formatted_reviews_data, :encoded_place_name, :execute_place_id_request,
|
52
|
+
:execute_place_name_request
|
39
53
|
end
|
40
54
|
end
|
data/lib/google_reviews.rb
CHANGED
@@ -5,6 +5,7 @@ require "json"
|
|
5
5
|
require "net/http"
|
6
6
|
require "google_reviews/error"
|
7
7
|
require "google_reviews/utils"
|
8
|
+
require "google_reviews/response"
|
8
9
|
require "google_reviews/constants"
|
9
10
|
require "google_reviews/api_request"
|
10
11
|
require "google_reviews/translations"
|
@@ -16,25 +17,24 @@ module GoogleReviews
|
|
16
17
|
def self.fetch_reviews_by_place_name(api_key, place_name)
|
17
18
|
url = Utils.request_uri(api_key, place_name: place_name)
|
18
19
|
|
19
|
-
|
20
|
+
begin
|
21
|
+
data = Utils.execute_place_name_request(url)
|
22
|
+
return GoogleReviews::Response.new unless data
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
fetch_reviews_by_place_id(api_key, data.first["place_id"])
|
25
|
+
rescue ApiError => e
|
26
|
+
GoogleReviews::Response.new(status: "409", error: e)
|
27
|
+
end
|
25
28
|
end
|
26
29
|
|
27
30
|
def self.fetch_reviews_by_place_id(api_key, place_id)
|
28
31
|
url = Utils.request_uri(api_key, place_id: place_id)
|
29
32
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
return [] if reviews.nil? || reviews.empty?
|
36
|
-
|
37
|
-
Utils.formatted_reviews_data(reviews)
|
33
|
+
begin
|
34
|
+
Utils.execute_place_id_request(url)
|
35
|
+
rescue ApiError => e
|
36
|
+
GoogleReviews::Response.new(status: "409", error: e)
|
37
|
+
end
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_reviews
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gullariz12
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -61,6 +61,8 @@ files:
|
|
61
61
|
- lib/google_reviews/api_request.rb
|
62
62
|
- lib/google_reviews/constants.rb
|
63
63
|
- lib/google_reviews/error.rb
|
64
|
+
- lib/google_reviews/response.rb
|
65
|
+
- lib/google_reviews/review.rb
|
64
66
|
- lib/google_reviews/translations.rb
|
65
67
|
- lib/google_reviews/utils.rb
|
66
68
|
- lib/google_reviews/version.rb
|