google_reviews 1.0.0 → 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/CHANGELOG.md +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +8 -4
- data/lib/google_reviews/response.rb +18 -0
- data/lib/google_reviews/review.rb +22 -0
- data/lib/google_reviews/utils.rb +27 -6
- 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/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -54,9 +54,13 @@ You can rescue and handle these errors to provide appropriate error handling in
|
|
54
54
|
## Configuration
|
55
55
|
The gem doesn't require any additional configuration. However, it's recommended to configure the locale for translations. By default, the gem uses English (`:en`) as the locale. If you want to use a different locale, you can modify the `lib/google_reviews/translations.rb file`.
|
56
56
|
|
57
|
-
##
|
58
|
-
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
57
|
+
## Submitting a Pull Request
|
59
58
|
|
60
|
-
|
59
|
+
[Fork](https://help.github.com/articles/fork-a-repo/) the [official repository](https://github.com/TheArtOfCoding/google_reviews).
|
60
|
+
[Create a topic branch.](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/)
|
61
|
+
Implement your feature or bug fix.
|
62
|
+
Add, commit, and push your changes.
|
63
|
+
[Submit a pull request.](https://help.github.com/articles/using-pull-requests/)
|
61
64
|
|
62
|
-
|
65
|
+
## License
|
66
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -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,21 +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
|
-
author_name: review["author_name"],
|
19
|
-
rating: review["rating"],
|
20
|
-
text: review["text"]
|
21
|
-
}
|
21
|
+
Review.new(review)
|
22
22
|
end
|
23
23
|
end
|
24
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
|
+
|
25
45
|
private
|
26
46
|
|
27
47
|
def encoded_place_name(place_name)
|
28
48
|
URI.encode_www_form_component(place_name)
|
29
49
|
end
|
30
50
|
|
31
|
-
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
|
32
53
|
end
|
33
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
|