datashake-ruby-sdk 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/README.md +16 -0
- 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/version.rb +1 -1
- data/lib/datashake-ruby-sdk.rb +1 -0
- metadata +12 -2
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
|
@@ -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.
|
|
@@ -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
|
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
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
|
|
@@ -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
|