a_parser_client 0.1.6 → 0.1.12

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: 9ce1ab499b36e7ca18f90688137769f8a4dc153a1b7c6ffc683ec967fda1c6ff
4
- data.tar.gz: 21f8cb0c7fab8275665471654c6fa9a1029412f37a236455fec9aa20951ef651
3
+ metadata.gz: bb17cbf3c7f7242c9b4b59029f9e0b4cc1b5f69d0232047cf9876a78f654579d
4
+ data.tar.gz: ef2ab37b08492563235b4fd80de9462f86c684b4cea8d42da1daea17c5643bc0
5
5
  SHA512:
6
- metadata.gz: 40deb64d676410e4c1bfc35c33078eb589855459378456806f3e7d3b07c1db47e53b4a9d6dd43a1be70512bc671b538ad25c4eb16a265f31d44d555b8a0181ed
7
- data.tar.gz: 3280913d3d3afad37c3132074a015704de50e89bc9ed2f78e3905f86e073c9173f199fcdcfbdb7aeacbcb50784f69eebd03b793c08d1d37887b75ccf487d7574
6
+ metadata.gz: 67e35c398c10bbf1016b9c204f8dd5a71568442b9a9abd023c1da0af5f8882c9a7fb5ec59c1f16123855f74b705f3352757e8f92a137b9483fa298bfa50e72c6
7
+ data.tar.gz: 19c44de33e962c58597eb226584ae4e19cf2be134d82263f021592ca6301b85de32d408b971494e6fe9b87a91a8f82fd4da61f0880e64665e953a7c16d69eef5
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- a_parser_client (0.1.6)
4
+ a_parser_client (0.1.12)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.3)
10
- rake (10.5.0)
10
+ rake (13.0.1)
11
11
  rspec (3.8.0)
12
12
  rspec-core (~> 3.8.0)
13
13
  rspec-expectations (~> 3.8.0)
@@ -28,8 +28,8 @@ PLATFORMS
28
28
  DEPENDENCIES
29
29
  a_parser_client!
30
30
  bundler (~> 2.0)
31
- rake (~> 10.0)
31
+ rake (~> 13.0)
32
32
  rspec (~> 3.0)
33
33
 
34
34
  BUNDLED WITH
35
- 2.0.2
35
+ 2.2.6
data/README.md CHANGED
@@ -8,27 +8,29 @@ This is a test release, more API coverage is upcoming.
8
8
 
9
9
  Covered for now:
10
10
 
11
- - ping
12
- - info
13
- - getTaskList
14
- - getTaskState
15
- - getTaskConf
16
- - addTask
17
- - changeTaskStatus
18
- - getAccountsCount
19
- - getProxies
20
- - update
21
- - getTaskResultsFile
22
- - deleteTaskResultsFile
23
- - moveTask
24
- - getParserInfo
25
- - getParserPreset
11
+ - ping
12
+ - info
13
+ - getTaskList
14
+ - getTaskState
15
+ - getTaskConf
16
+ - addTask
17
+ - changeTaskStatus
18
+ - getAccountsCount
19
+ - getProxies
20
+ - update
21
+ - getTaskResultsFile
22
+ - deleteTaskResultsFile
23
+ - moveTask
24
+ - getParserInfo
25
+ - getParserPreset
26
+ - oneRequest
27
+ - bulkRequest
26
28
 
27
29
  TODO:
28
30
 
29
- - oneRequest
30
- - bulkRequest
31
+ Some automation procedures:
31
32
 
33
+ - multitasks operations (like stop all tasks etc.)
32
34
 
33
35
 
34
36
  ## Installation
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 2.0"
32
- spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
34
  end
data/bin/console CHANGED
@@ -1,14 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "a_parser_client"
4
+ require 'bundler/setup'
5
+ require 'a_parser_client'
5
6
 
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
7
+ require 'irb'
14
8
  IRB.start(__FILE__)
@@ -1,219 +1,27 @@
1
- require "a_parser_client/version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'a_parser_client/version'
4
+ require 'a_parser_client/api'
2
5
 
3
6
  module AParserClient
4
7
  class Error < StandardError; end
5
8
 
6
- class API
7
- require "json"
8
- require "open-uri"
9
- require "net/http"
10
-
11
- attr :api_url, :api_password, :alive
12
-
13
- def initialize(api_url, api_password)
14
- if api_url =~ URI::regexp
15
- @api_url = api_url
16
- @api_password = api_password
17
- @alive = self.alive?
18
- else
19
- raise "Bad API URL provided."
20
- end
21
- end
22
-
23
- def ping
24
- request = {
25
- password: @api_pass,
26
- action: 'ping'
27
- }
28
- do_it request
29
- end
30
-
31
- #updates alive status
32
- def alive?
33
- @alive = ping ? true : false
34
- end
35
-
36
-
37
- def get_task_list(completed=false)
38
- request = {
39
- password: @api_password,
40
- action: 'getTasksList',
41
- data: {completed: completed ? 1 : 0}
42
- }
43
- do_it request
44
- end
45
-
46
- def get_task_state(task_id)
47
- request = {
48
- password: @api_password,
49
- action: 'getTaskState',
50
- data: {taskUid: task_id}
51
- }
52
- do_it request
53
- end
54
-
55
- def get_task_conf(task_id)
56
- request = {
57
- password: @api_password,
58
- action: 'getTaskConf',
59
- data: {taskUid: task_id}
60
- }
61
- do_it request
62
- end
63
-
64
-
65
- def get_info
66
- request = {
67
- password: @api_password,
68
- action: 'info',
69
- }
70
- do_it request
71
- end
72
-
73
- def add_task(task_type='text', queries_array=[], queries_file=nil, config, preset, parsers, result_file_name)
74
- request = {
75
- password: @api_password,
76
- action: 'addTask',
77
- data: {
78
- queriesFrom: task_type,
79
- queries: (task_type == 'text' ? queries_array : queries_file),
80
- configPreset: config,
81
- preset: preset,
82
- parsers: parsers,
83
- resultsFileName: result_file_name
84
- }
85
- }
86
- do_it request
87
- end
88
-
89
- def change_task_status(task_id, to_status)
90
- request = {
91
- password: @api_password,
92
- action: 'changeTaskStatus',
93
- data: {
94
- taskUid: task_id,
95
- toStatus: to_status
96
- }
97
- }
98
- do_it request
99
- end
100
-
101
- def get_accounts_count
102
- request = {
103
- password: @api_password,
104
- action: 'getAccountsCount',
105
- data: {}
106
- }
107
- do_it request
108
- end
109
-
110
-
111
- def get_proxies
112
- request = {
113
- password: @api_password,
114
- action: 'getProxies'
115
- }
116
- do_it request
117
- end
118
-
119
- def update!
120
- request = {
121
- password: @api_password,
122
- action: 'update',
123
- data: {}
124
- }
125
- do_it request
126
- end
127
-
128
- def get_task_results_file(task_id)
129
- request = {
130
- password: @api_password,
131
- action: 'getTaskResultsFile',
132
- data: {taskUid: task_id}
133
- }
134
- do_it request
135
- end
136
-
137
- def delete_task_results_file(task_id)
138
- request = {
139
- password: @api_password,
140
- action: 'deleteTaskResultsFile',
141
- data: {taskUid: task_id}
142
- }
143
- do_it request
144
- end
145
-
146
- def move_task(task_id, direction)
147
- request = {
148
- password: @api_password,
149
- action: 'moveTask',
150
- data: {
151
- taskUid: task_id,
152
- toStatus: direction
153
- }
154
- }
155
- do_it request
156
- end
157
-
158
- def get_parser_info(parser_name)
159
- request = {
160
- password: @api_password,
161
- action: 'getParserInfo',
162
- data: {
163
- parser: parser_name
164
- }
165
- }
166
- do_it request
167
- end
168
-
169
-
170
- def get_parser_preset(parser_name, preset_name)
171
- request = {
172
- password: @api_password,
173
- action: 'getParserInfo',
174
- data: {
175
- parser: parser_name,
176
- reset: preset_name
177
- }
178
- }
179
- do_it request
180
- end
181
-
182
-
183
- private # internal use only
9
+ class Control
10
+ attr_reader :tasks, :driver
184
11
 
185
- def do_it(request)
186
- request_body = request.to_json
187
- response = send_request(request_body)
188
- return response
189
- end
12
+ def initialize(api_driver)
13
+ @driver = api_driver
190
14
 
191
- def send_request(request)
192
- uri = URI @api_url
15
+ raise 'No API driver provided.' unless @driver
193
16
 
194
- req = Net::HTTP::Post.new uri
195
- req.body = (request)
196
- req.content_type = 'text/plain; charset=UTF-8'
17
+ raise 'API driver should be alive to take control of parser.' unless @driver.alive?
197
18
 
198
- begin
199
- res = Net::HTTP.start(uri.hostname, uri.port) {|http|
200
- http.request(req)
201
- }
202
- rescue Exception => e
203
- puts "Send request error: #{e}"
204
- end
19
+ @tasks = fetch_tasks
20
+ end
205
21
 
206
- if res
207
- begin
208
- response = JSON.parse res.body
209
- rescue JSON::ParserError => e
210
- raise "Not a JSON type response from the server #{@api_url}. Probably not an API endpoint."
211
- end
212
- else
213
- nil
214
- end
215
- end
216
-
217
-
22
+ def fetch_tasks
23
+ data = @driver.get_tasks_list
24
+ data['data'] || []
25
+ end
218
26
  end
219
27
  end
@@ -0,0 +1,238 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AParserClient
4
+ class API
5
+ require 'json'
6
+ require 'open-uri'
7
+ require 'net/http'
8
+
9
+ attr :api_url, :api_password, :alive
10
+
11
+ def initialize(api_url, api_password)
12
+ raise 'Bad API URL provided.' unless api_url =~ URI::DEFAULT_PARSER.make_regexp
13
+
14
+ @api_url = api_url
15
+ @api_password = api_password
16
+ @alive = alive?
17
+ end
18
+
19
+ def ping
20
+ request = {
21
+ password: @api_password,
22
+ action: 'ping'
23
+ }
24
+ do_it request
25
+ end
26
+
27
+ # updates alive status
28
+ def alive?
29
+ @alive = ping ? true : false
30
+ end
31
+
32
+ def get_tasks_list(completed = false)
33
+ request = {
34
+ password: @api_password,
35
+ action: 'getTasksList',
36
+ data: { completed: completed ? 1 : 0 }
37
+ }
38
+ do_it request
39
+ end
40
+
41
+ def get_task_state(task_id)
42
+ request = {
43
+ password: @api_password,
44
+ action: 'getTaskState',
45
+ data: { taskUid: task_id }
46
+ }
47
+ do_it request
48
+ end
49
+
50
+ def get_task_conf(task_id)
51
+ request = {
52
+ password: @api_password,
53
+ action: 'getTaskConf',
54
+ data: { taskUid: task_id }
55
+ }
56
+ do_it request
57
+ end
58
+
59
+ def get_info
60
+ request = {
61
+ password: @api_password,
62
+ action: 'info',
63
+ }
64
+ do_it request
65
+ end
66
+
67
+ def add_task(task_type = 'text', queries_array = [], queries_file = nil, config, preset, parsers, result_file_name)
68
+ request = {
69
+ password: @api_password,
70
+ action: 'addTask',
71
+ data: {
72
+ queriesFrom: task_type,
73
+ queries: (task_type == 'text' ? queries_array : queries_file),
74
+ configPreset: config,
75
+ preset: preset,
76
+ parsers: parsers,
77
+ resultsFileName: result_file_name
78
+ }
79
+ }
80
+ do_it request
81
+ end
82
+
83
+ def one_request(query, parser, preset = 'default', config_preset = 'default', options = [])
84
+ request = {
85
+ password: @api_password,
86
+ action: 'oneRequest',
87
+ data: {
88
+ query: query,
89
+ parser: parser,
90
+ configPreset: config_preset,
91
+ preset: preset,
92
+ options: options
93
+ }
94
+ }
95
+ do_it request
96
+ end
97
+
98
+ def bulk_request(queries, parser, preset, config_preset, threads, raw_results, need_data, options)
99
+ request = {
100
+ password: @api_password,
101
+ action: 'bulkRequest',
102
+ data: {
103
+ queries: queries,
104
+ parser: parser,
105
+ configPreset: config_preset,
106
+ preset: preset,
107
+ threads: threads,
108
+ rawResults: raw_results,
109
+ needData: need_data,
110
+ options: options
111
+ }
112
+ }
113
+ do_it request
114
+ end
115
+
116
+ def change_task_status(task_id, to_status)
117
+ request = {
118
+ password: @api_password,
119
+ action: 'changeTaskStatus',
120
+ data: {
121
+ taskUid: task_id,
122
+ toStatus: to_status
123
+ }
124
+ }
125
+ do_it request
126
+ end
127
+
128
+ def get_accounts_count
129
+ request = {
130
+ password: @api_password,
131
+ action: 'getAccountsCount',
132
+ data: {}
133
+ }
134
+ do_it request
135
+ end
136
+
137
+ def get_proxies
138
+ request = {
139
+ password: @api_password,
140
+ action: 'getProxies'
141
+ }
142
+ do_it request
143
+ end
144
+
145
+ def update!
146
+ request = {
147
+ password: @api_password,
148
+ action: 'update',
149
+ data: {}
150
+ }
151
+ do_it request
152
+ end
153
+
154
+ def get_task_results_file(task_id)
155
+ request = {
156
+ password: @api_password,
157
+ action: 'getTaskResultsFile',
158
+ data: { taskUid: task_id }
159
+ }
160
+ do_it request
161
+ end
162
+
163
+ def delete_task_results_file(task_id)
164
+ request = {
165
+ password: @api_password,
166
+ action: 'deleteTaskResultsFile',
167
+ data: { taskUid: task_id }
168
+ }
169
+ do_it request
170
+ end
171
+
172
+ def move_task(task_id, direction)
173
+ request = {
174
+ password: @api_password,
175
+ action: 'moveTask',
176
+ data: {
177
+ taskUid: task_id,
178
+ toStatus: direction
179
+ }
180
+ }
181
+ do_it request
182
+ end
183
+
184
+ def get_parser_info(parser_name)
185
+ request = {
186
+ password: @api_password,
187
+ action: 'getParserInfo',
188
+ data: {
189
+ parser: parser_name
190
+ }
191
+ }
192
+ do_it request
193
+ end
194
+
195
+ def get_parser_preset(parser_name, preset_name)
196
+ request = {
197
+ password: @api_password,
198
+ action: 'getParserInfo',
199
+ data: {
200
+ parser: parser_name,
201
+ reset: preset_name
202
+ }
203
+ }
204
+ do_it request
205
+ end
206
+
207
+ private # internal use only
208
+
209
+ def do_it(request)
210
+ request_body = request.to_json
211
+ send_request(request_body)
212
+ end
213
+
214
+ def send_request(request)
215
+ uri = URI @api_url
216
+
217
+ req = Net::HTTP::Post.new uri
218
+ req.body = (request)
219
+ req.content_type = 'text/plain; charset=UTF-8'
220
+
221
+ begin
222
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
223
+ http.request(req)
224
+ end
225
+ rescue StandardError => e
226
+ puts "Send request error: #{e}"
227
+ end
228
+
229
+ return unless res
230
+
231
+ begin
232
+ JSON.parse res.body
233
+ rescue JSON::ParserError => e
234
+ raise "Not a JSON type response from the server #{@api_url}. Probably not an API endpoint. Error: #{e}"
235
+ end
236
+ end
237
+ end
238
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AParserClient
2
- VERSION = "0.1.6"
4
+ VERSION = '0.1.12'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: a_parser_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Shevchenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-25 00:00:00.000000000 Z
11
+ date: 2021-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +72,7 @@ files:
72
72
  - bin/console
73
73
  - bin/setup
74
74
  - lib/a_parser_client.rb
75
+ - lib/a_parser_client/api.rb
75
76
  - lib/a_parser_client/version.rb
76
77
  homepage: https://github.com/yvshevchenko/a_parser_client
77
78
  licenses:
@@ -96,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
97
  - !ruby/object:Gem::Version
97
98
  version: '0'
98
99
  requirements: []
99
- rubyforge_project:
100
- rubygems_version: 2.7.7
100
+ rubygems_version: 3.1.4
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: A simple inerface to A-Parser API.