datashake-ruby-sdk 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5e8658f1037418c26e29a10674219c469c76946e997c33f6ee7a4c175184ec8
4
- data.tar.gz: b313abc0652ef1bd697f5be1e152e3be79a167f1609e24a3d8f1c226e58676f5
3
+ metadata.gz: 4f0df80b56b9b5f976b62f206111490edef96fd7b77a564745467fabc37e7b15
4
+ data.tar.gz: 5f117c1c58754f37ceaa60eb8a595a603050d5217ae521bdc7ff59c472bd80f2
5
5
  SHA512:
6
- metadata.gz: 1a75cd30b5894219366ad0cf9dbc723f58b47a106b437b801afe67608dab0e2d125c5cd27afb9afb440e00843ffa84abf3550280d15d3a62edb5f9c0c2f1ea52
7
- data.tar.gz: e311c570b0b6bb3ebea576b82815193a1a28452b0aa8b2786b8b6728b193f04200853a82ae5959e38d3a802bf39edc8973321ee3a111b451fee7af246a993782
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,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datashake
4
+ module ReviewIndex
5
+ class V1
6
+ class Error < StandardError
7
+ attr_reader :status
8
+
9
+ def initialize(msg, status)
10
+ @status = status
11
+
12
+ super(msg)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ 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
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datashake
4
+ module ReviewIndex
5
+ autoload :Client, "datashake-ruby-sdk/review_index/client"
6
+ autoload :V1, "datashake-ruby-sdk/review_index/v1"
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Datashake
4
- VERSION = "1.0.1"
4
+ VERSION = "1.1.1"
5
5
  end
@@ -3,6 +3,7 @@
3
3
  require_relative "datashake-ruby-sdk/version"
4
4
 
5
5
  module Datashake
6
+ autoload :ReviewIndex, "datashake-ruby-sdk/review_index"
6
7
  autoload :ReviewScraper, "datashake-ruby-sdk/review_scraper"
7
8
  autoload :Types, "datashake-ruby-sdk/types"
8
9
  end
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.0.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-09-14 00:00:00.000000000 Z
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