datashake-ruby-sdk 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/README.md +21 -1
- data/lib/datashake-ruby-sdk/review_index/client.rb +51 -0
- data/lib/datashake-ruby-sdk/review_index/v1/base_endpoint.rb +42 -0
- data/lib/datashake-ruby-sdk/review_index/v1/error.rb +17 -0
- data/lib/datashake-ruby-sdk/review_index/v1/profiles.rb +37 -0
- data/lib/datashake-ruby-sdk/review_index/v1/response.rb +20 -0
- data/lib/datashake-ruby-sdk/review_index/v1/reviews.rb +42 -0
- data/lib/datashake-ruby-sdk/review_index/v1/status_response.rb +21 -0
- data/lib/datashake-ruby-sdk/review_index/v1/update_status.rb +21 -0
- data/lib/datashake-ruby-sdk/review_index/v1.rb +61 -0
- data/lib/datashake-ruby-sdk/review_index.rb +8 -0
- data/lib/datashake-ruby-sdk/review_scraper/v2/profile_instance.rb +5 -5
- data/lib/datashake-ruby-sdk/version.rb +1 -1
- data/lib/datashake-ruby-sdk.rb +1 -0
- metadata +17 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4f0df80b56b9b5f976b62f206111490edef96fd7b77a564745467fabc37e7b15
|
|
4
|
+
data.tar.gz: 5f117c1c58754f37ceaa60eb8a595a603050d5217ae521bdc7ff59c472bd80f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b0ed0de9d0cfa2336b34d3c2e0817647eb95d17d72cf42084aa1c4b85f26f28a4409db9cde566d9ca49abca31bd25115dbc3da0e250506bb37cac9409cdf57b8
|
|
7
|
+
data.tar.gz: c48aa5f0cf6a1a6fef42a673a5fab41a8fb66505f2a2e9c74e178edc193cd5dbd6f950489c7c1ada7c626605f0beb56478e8336806def459f35b87675d6f3e3e
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# datashake-ruby-sdk
|
|
1
|
+
# Datashake Ruby SDK  [](https://badge.fury.io/rb/datashake-ruby-sdk)
|
|
2
2
|
|
|
3
3
|
An API wrapper written in ruby for Datashake API
|
|
4
4
|
https://docs.datashake.com/
|
|
@@ -39,6 +39,22 @@ client.info.job_id(346998013).fetch # Fetch job details
|
|
|
39
39
|
client.reviews.job_id(346998013).page(2).per_page(10).fetch # Fetch reviews for the given job
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
```ruby
|
|
43
|
+
client = Datashake::ReviewIndex::Client.new(token: 'your-api-token')
|
|
44
|
+
|
|
45
|
+
response = client # Get reviews from RIAPI
|
|
46
|
+
.reviews
|
|
47
|
+
.callback("https://myserver.com/callbacks/reviews")
|
|
48
|
+
.name("McDonalds")
|
|
49
|
+
.city("Tbilisi")
|
|
50
|
+
.fetch
|
|
51
|
+
|
|
52
|
+
response.success => true
|
|
53
|
+
response.request_id => "1665992737596342636-004fd578-fd32-41"
|
|
54
|
+
response.status => 201
|
|
55
|
+
response.message => "Your task was successfully submitted."
|
|
56
|
+
```
|
|
57
|
+
|
|
42
58
|
## Development
|
|
43
59
|
|
|
44
60
|
After checking out the repo, run `bin/setup` to install dependencies.
|
|
@@ -54,6 +70,10 @@ To release a new version, update the version number in `version.rb`, and then ru
|
|
|
54
70
|
|
|
55
71
|
Bug reports and pull requests are welcome on GitHub at https://github.com/reviewshake/datashake-ruby-sdk.
|
|
56
72
|
|
|
73
|
+
## Release
|
|
74
|
+
|
|
75
|
+
Bump the version number in https://github.com/reviewshake/datashake-ruby-sdk/blob/main/lib/datashake-ruby-sdk/version.rb, create a release with github and a tag from the new version number. After doing the github release, build the gem (`gem build`) from your terminal and push (`gem push`) the new version rubygems https://rubygems.org/gems/datashake-ruby-sdk. You need to be a gem owner in order to do this.
|
|
76
|
+
|
|
57
77
|
## License
|
|
58
78
|
|
|
59
79
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "faraday"
|
|
4
|
+
|
|
5
|
+
module Datashake
|
|
6
|
+
module ReviewIndex
|
|
7
|
+
class Client
|
|
8
|
+
BASE_URL = "https://reviewindexapi.datashake.com"
|
|
9
|
+
|
|
10
|
+
attr_reader :token
|
|
11
|
+
|
|
12
|
+
def initialize(token:, adapter: Faraday.default_adapter, timeout: 30, open_timeout: 30)
|
|
13
|
+
@token = token
|
|
14
|
+
@adapter = adapter
|
|
15
|
+
@timeout = timeout
|
|
16
|
+
@open_timeout = open_timeout
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def connection
|
|
20
|
+
@connection ||= Faraday.new do |conn|
|
|
21
|
+
conn.url_prefix = BASE_URL
|
|
22
|
+
conn.request(:json)
|
|
23
|
+
conn.response(:json, content_type: "application/json")
|
|
24
|
+
conn.options.timeout = timeout
|
|
25
|
+
conn.options.open_timeout = open_timeout
|
|
26
|
+
conn.adapter(adapter)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def v1
|
|
31
|
+
@v1 ||= V1.new(self)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def profiles
|
|
35
|
+
v1.profiles
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def reviews
|
|
39
|
+
v1.reviews
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def update_status
|
|
43
|
+
v1.update_status
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
attr_reader :adapter, :timeout, :open_timeout
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datashake
|
|
4
|
+
module ReviewIndex
|
|
5
|
+
class V1
|
|
6
|
+
class BaseEndpoint
|
|
7
|
+
def self.request_parameters(request_parameters)
|
|
8
|
+
request_parameters.each do |param_name|
|
|
9
|
+
define_method(param_name) do |value|
|
|
10
|
+
@params[param_name] = value
|
|
11
|
+
|
|
12
|
+
self
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def initialize(version)
|
|
18
|
+
@version = version
|
|
19
|
+
@params = {}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def fetch
|
|
23
|
+
response = version.fetch(method: :get, path: endpoint_path, params: params)
|
|
24
|
+
|
|
25
|
+
response_class.new(response)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def response_class
|
|
29
|
+
raise NotImplementedError, "Implement it in a successor class"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def endpoint_path
|
|
33
|
+
raise NotImplementedError, "Implement it in a successor class"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
attr_reader :version, :params
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datashake
|
|
4
|
+
module ReviewIndex
|
|
5
|
+
class V1
|
|
6
|
+
class Profiles < BaseEndpoint
|
|
7
|
+
PATH = "profiles"
|
|
8
|
+
|
|
9
|
+
request_parameters %i[
|
|
10
|
+
address
|
|
11
|
+
callback
|
|
12
|
+
city
|
|
13
|
+
country
|
|
14
|
+
domain
|
|
15
|
+
external_identifier
|
|
16
|
+
name
|
|
17
|
+
page_number
|
|
18
|
+
per_page
|
|
19
|
+
phone_number
|
|
20
|
+
state
|
|
21
|
+
street
|
|
22
|
+
ticker_symbol
|
|
23
|
+
update
|
|
24
|
+
zip_code
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
def response_class
|
|
28
|
+
Datashake::ReviewIndex::V1::Response
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def endpoint_path
|
|
32
|
+
PATH
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry-struct"
|
|
4
|
+
|
|
5
|
+
module Datashake
|
|
6
|
+
module ReviewIndex
|
|
7
|
+
class V1
|
|
8
|
+
class Response < ::Dry::Struct
|
|
9
|
+
transform_keys(&:to_sym)
|
|
10
|
+
|
|
11
|
+
attribute :success, Datashake::Types::Strict::Bool
|
|
12
|
+
attribute? :request_id, Datashake::Types::Strict::String
|
|
13
|
+
attribute :http_status, Datashake::Types::Strict::Integer
|
|
14
|
+
attribute :message, Datashake::Types::Strict::String
|
|
15
|
+
attribute? :credits_used, Datashake::Types::Strict::Integer
|
|
16
|
+
attribute? :details, Datashake::Types::Strict::String
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datashake
|
|
4
|
+
module ReviewIndex
|
|
5
|
+
class V1
|
|
6
|
+
class Reviews < BaseEndpoint
|
|
7
|
+
PATH = "reviews"
|
|
8
|
+
|
|
9
|
+
request_parameters %i[
|
|
10
|
+
address
|
|
11
|
+
callback
|
|
12
|
+
city
|
|
13
|
+
country
|
|
14
|
+
diff
|
|
15
|
+
domain
|
|
16
|
+
external_identifier
|
|
17
|
+
from_date
|
|
18
|
+
name
|
|
19
|
+
page_number
|
|
20
|
+
per_page
|
|
21
|
+
phone_number
|
|
22
|
+
review_site
|
|
23
|
+
state
|
|
24
|
+
street
|
|
25
|
+
ticker_symbol
|
|
26
|
+
timeseries
|
|
27
|
+
to_date
|
|
28
|
+
update
|
|
29
|
+
zip_code
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
def response_class
|
|
33
|
+
Datashake::ReviewIndex::V1::Response
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def endpoint_path
|
|
37
|
+
PATH
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dry-struct"
|
|
4
|
+
|
|
5
|
+
module Datashake
|
|
6
|
+
module ReviewIndex
|
|
7
|
+
class V1
|
|
8
|
+
class StatusResponse < ::Dry::Struct
|
|
9
|
+
transform_keys(&:to_sym)
|
|
10
|
+
|
|
11
|
+
attribute :request_id, Datashake::Types::Strict::String
|
|
12
|
+
attribute :http_status, Datashake::Types::Strict::Integer
|
|
13
|
+
attribute :status, Datashake::Types::Strict::String
|
|
14
|
+
attribute :created_at, Datashake::Types::Strict::String
|
|
15
|
+
attribute :completeness_rate, Datashake::Types::Strict::Float
|
|
16
|
+
attribute :success_rate, Datashake::Types::Strict::Float
|
|
17
|
+
attribute :size, Datashake::Types::Strict::Integer
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datashake
|
|
4
|
+
module ReviewIndex
|
|
5
|
+
class V1
|
|
6
|
+
class UpdateStatus < BaseEndpoint
|
|
7
|
+
PATH = "update/status"
|
|
8
|
+
|
|
9
|
+
request_parameters [:request_id]
|
|
10
|
+
|
|
11
|
+
def response_class
|
|
12
|
+
Datashake::ReviewIndex::V1::StatusResponse
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def endpoint_path
|
|
16
|
+
PATH
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datashake
|
|
4
|
+
module ReviewIndex
|
|
5
|
+
class V1
|
|
6
|
+
autoload :BaseEndpoint, "datashake-ruby-sdk/review_index/v1/base_endpoint"
|
|
7
|
+
autoload :Error, "datashake-ruby-sdk/review_index/v1/error"
|
|
8
|
+
autoload :Profiles, "datashake-ruby-sdk/review_index/v1/profiles"
|
|
9
|
+
autoload :Response, "datashake-ruby-sdk/review_index/v1/response"
|
|
10
|
+
autoload :StatusResponse, "datashake-ruby-sdk/review_index/v1/status_response"
|
|
11
|
+
autoload :Reviews, "datashake-ruby-sdk/review_index/v1/reviews"
|
|
12
|
+
autoload :UpdateStatus, "datashake-ruby-sdk/review_index/v1/update_status"
|
|
13
|
+
|
|
14
|
+
def initialize(client)
|
|
15
|
+
@client = client
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def profiles
|
|
19
|
+
@profiles ||= Profiles.new(self)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def reviews
|
|
23
|
+
@reviews ||= Reviews.new(self)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def update_status
|
|
27
|
+
@update_status ||= UpdateStatus.new(self)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def connection
|
|
31
|
+
client.connection
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def fetch(method:, path:, params: {}, body: {})
|
|
35
|
+
response = connection.public_send(method, path) do |request|
|
|
36
|
+
request.params = params
|
|
37
|
+
request.params[:api_key] = client.token
|
|
38
|
+
request.body = body.to_json
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
body = response.body
|
|
42
|
+
body["http_status"] = response.status
|
|
43
|
+
|
|
44
|
+
return body if body["success"] || success_status?(response.status)
|
|
45
|
+
|
|
46
|
+
raise Datashake::ReviewIndex::V1::Error.new(
|
|
47
|
+
body["message"],
|
|
48
|
+
body["http_status"]
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def success_status?(status)
|
|
53
|
+
[200, 201].include?(status)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
attr_reader :client
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -15,13 +15,13 @@ module Datashake
|
|
|
15
15
|
attribute :source_name, Datashake::Types::Strict::String
|
|
16
16
|
attribute :place_id, Datashake::Types::Strict::String.optional
|
|
17
17
|
attribute :external_identifier, Datashake::Types::Strict::String.optional
|
|
18
|
-
attribute :meta_data, Datashake::Types::Metadata
|
|
18
|
+
attribute :meta_data, Datashake::Types::Metadata.optional
|
|
19
19
|
attribute :unique_id, Datashake::Types::Strict::String.optional
|
|
20
|
-
attribute :review_count, Datashake::Types::Strict::Integer
|
|
21
|
-
attribute :average_rating, Datashake::Types::Strict::Float
|
|
22
|
-
attribute :last_crawl, Datashake::Types::Params::Date
|
|
20
|
+
attribute :review_count, Datashake::Types::Strict::Integer.optional
|
|
21
|
+
attribute :average_rating, Datashake::Types::Strict::Float.optional
|
|
22
|
+
attribute :last_crawl, Datashake::Types::Params::Date.optional
|
|
23
23
|
attribute :crawl_status, Datashake::Types::Strict::String
|
|
24
|
-
attribute :percentage_complete, Datashake::Types::
|
|
24
|
+
attribute :percentage_complete, Datashake::Types::Coercible::Integer
|
|
25
25
|
attribute :result_count, Datashake::Types::Strict::Integer
|
|
26
26
|
attribute :credits_used, Datashake::Types::Strict::Integer
|
|
27
27
|
attribute :from_date, Datashake::Types::Params::Date.optional
|
data/lib/datashake-ruby-sdk.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datashake-ruby-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Reviewshake <3 Datashake
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-10-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-struct
|
|
@@ -38,7 +38,7 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '2.2'
|
|
41
|
-
description:
|
|
41
|
+
description:
|
|
42
42
|
email:
|
|
43
43
|
- dev@shake.io
|
|
44
44
|
executables: []
|
|
@@ -52,6 +52,16 @@ files:
|
|
|
52
52
|
- README.md
|
|
53
53
|
- Rakefile
|
|
54
54
|
- lib/datashake-ruby-sdk.rb
|
|
55
|
+
- lib/datashake-ruby-sdk/review_index.rb
|
|
56
|
+
- lib/datashake-ruby-sdk/review_index/client.rb
|
|
57
|
+
- lib/datashake-ruby-sdk/review_index/v1.rb
|
|
58
|
+
- lib/datashake-ruby-sdk/review_index/v1/base_endpoint.rb
|
|
59
|
+
- lib/datashake-ruby-sdk/review_index/v1/error.rb
|
|
60
|
+
- lib/datashake-ruby-sdk/review_index/v1/profiles.rb
|
|
61
|
+
- lib/datashake-ruby-sdk/review_index/v1/response.rb
|
|
62
|
+
- lib/datashake-ruby-sdk/review_index/v1/reviews.rb
|
|
63
|
+
- lib/datashake-ruby-sdk/review_index/v1/status_response.rb
|
|
64
|
+
- lib/datashake-ruby-sdk/review_index/v1/update_status.rb
|
|
55
65
|
- lib/datashake-ruby-sdk/review_scraper.rb
|
|
56
66
|
- lib/datashake-ruby-sdk/review_scraper/client.rb
|
|
57
67
|
- lib/datashake-ruby-sdk/review_scraper/v2.rb
|
|
@@ -79,7 +89,7 @@ licenses:
|
|
|
79
89
|
metadata:
|
|
80
90
|
homepage_uri: https://docs.datashake.com
|
|
81
91
|
source_code_uri: https://github.com/reviewshake/datashake-ruby-sdk
|
|
82
|
-
post_install_message:
|
|
92
|
+
post_install_message:
|
|
83
93
|
rdoc_options: []
|
|
84
94
|
require_paths:
|
|
85
95
|
- lib
|
|
@@ -94,8 +104,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
94
104
|
- !ruby/object:Gem::Version
|
|
95
105
|
version: '0'
|
|
96
106
|
requirements: []
|
|
97
|
-
rubygems_version: 3.3
|
|
98
|
-
signing_key:
|
|
107
|
+
rubygems_version: 3.0.3
|
|
108
|
+
signing_key:
|
|
99
109
|
specification_version: 4
|
|
100
110
|
summary: An API wrapper for Datashake API
|
|
101
111
|
test_files: []
|