a_parser_client 0.1.7 → 0.1.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 420bdf672bc9ceb584c65ce865513b87c34c5749f32900653c284bdf1d48f9cb
4
- data.tar.gz: c4cb1b9a6c7be8c2af31a1e83429743a18e00a783e12341d25756300091ea8ff
3
+ metadata.gz: 8a8bc499efb525fbec81f9baf371d53996c8b161ff84be8bf99d5716a1fd4bdc
4
+ data.tar.gz: 828b64103b24b88d37215e47b4ff218fe0792d61332bdd4a73d239b65e7255aa
5
5
  SHA512:
6
- metadata.gz: 69fe3774906263c4b5d00fbbe2b7ba1f5e55c5e0c99a8a1d52ef3f20122628b51aebefc469d154c9ad475e079bc4120bc2462f14318717d91c0b5a8f339d48c2
7
- data.tar.gz: '08fdcf0b798c9a430f280c556e07f93a021e54d670eaaaa9ba759c63a1245b46f7377b7a67b90d47fcd0f5108c91bc3ab2bc5fde53ff6695e5bb9c282b851ad4'
6
+ metadata.gz: 7ebb4925c0aaf3dc294966d36e26bc189b1b6474a9c7071f6bd7f4737c032ae74fec440fc9879d6fc4ddef97889e38e36607ea00d90abe941a346bd9155e6540
7
+ data.tar.gz: 9406200c8dc40bd5bf51e3334243c6d32c67be0d4c39eb5e3bdba3cc63f9a5bfe9373dea43ff66cd9c13b479321ded812dcdc8325c3fa40baa149963474f7c01
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- a_parser_client (0.1.7)
4
+ a_parser_client (0.1.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,254 +1,28 @@
1
1
  require "a_parser_client/version"
2
+ require "a_parser_client/api"
2
3
 
3
4
  module AParserClient
4
- class Error < StandardError; end
5
+ class Error < StandardError; end
5
6
 
6
- class API
7
- require "json"
8
- require "open-uri"
9
- require "net/http"
7
+ class Control
8
+ attr_reader :tasks
10
9
 
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
-
90
- def one_request(query, parser, preset='default', config_preset='default', options=[])
91
- request = {
92
- password: @api_password,
93
- action: 'oneRequest',
94
- data: {
95
- query: query,
96
- parser: parser,
97
- configPreset: config_preset,
98
- preset: preset,
99
- options: options
100
- }
101
- }
102
- do_it request
103
- end
104
-
105
- def bulk_request(queries=[], parser, preset='default', config_preset='default', threads, raw_results=0, need_data=0, options=[])
106
- request = {
107
- password: @api_password,
108
- action: 'bulkRequest',
109
- data: {
110
- queries: queries,
111
- parser: parser,
112
- configPreset: config_preset,
113
- preset: preset,
114
- threads: threads,
115
- rawResults: raw_results,
116
- needData: need_data,
117
- options: options
118
- }
119
- }
120
- do_it request
121
- end
122
-
123
-
124
- def change_task_status(task_id, to_status)
125
- request = {
126
- password: @api_password,
127
- action: 'changeTaskStatus',
128
- data: {
129
- taskUid: task_id,
130
- toStatus: to_status
131
- }
132
- }
133
- do_it request
134
- end
135
-
136
- def get_accounts_count
137
- request = {
138
- password: @api_password,
139
- action: 'getAccountsCount',
140
- data: {}
141
- }
142
- do_it request
143
- end
144
-
145
-
146
- def get_proxies
147
- request = {
148
- password: @api_password,
149
- action: 'getProxies'
150
- }
151
- do_it request
152
- end
153
-
154
- def update!
155
- request = {
156
- password: @api_password,
157
- action: 'update',
158
- data: {}
159
- }
160
- do_it request
161
- end
162
-
163
- def get_task_results_file(task_id)
164
- request = {
165
- password: @api_password,
166
- action: 'getTaskResultsFile',
167
- data: {taskUid: task_id}
168
- }
169
- do_it request
170
- end
171
-
172
- def delete_task_results_file(task_id)
173
- request = {
174
- password: @api_password,
175
- action: 'deleteTaskResultsFile',
176
- data: {taskUid: task_id}
177
- }
178
- do_it request
179
- end
180
-
181
- def move_task(task_id, direction)
182
- request = {
183
- password: @api_password,
184
- action: 'moveTask',
185
- data: {
186
- taskUid: task_id,
187
- toStatus: direction
188
- }
189
- }
190
- do_it request
191
- end
192
-
193
- def get_parser_info(parser_name)
194
- request = {
195
- password: @api_password,
196
- action: 'getParserInfo',
197
- data: {
198
- parser: parser_name
199
- }
200
- }
201
- do_it request
202
- end
203
-
204
-
205
- def get_parser_preset(parser_name, preset_name)
206
- request = {
207
- password: @api_password,
208
- action: 'getParserInfo',
209
- data: {
210
- parser: parser_name,
211
- reset: preset_name
212
- }
213
- }
214
- do_it request
215
- end
10
+ def initialize(api_driver)
11
+ if api_driver
12
+ unless api_driver.alive?
13
+ raise "API driver should be alive to take control of parser."
14
+ end
216
15
 
16
+ @tasks = fetch_tasks
17
+ else
18
+ raise "No API driver provided."
19
+ end
217
20
 
218
- private # internal use only
21
+ end
219
22
 
220
- def do_it(request)
221
- request_body = request.to_json
222
- response = send_request(request_body)
223
- return response
23
+ def fetch_tasks
24
+ data = api_driver.get_tasks_list
25
+ data['data'] ? data['data'] : []
26
+ end
224
27
  end
225
-
226
- def send_request(request)
227
- uri = URI @api_url
228
-
229
- req = Net::HTTP::Post.new uri
230
- req.body = (request)
231
- req.content_type = 'text/plain; charset=UTF-8'
232
-
233
- begin
234
- res = Net::HTTP.start(uri.hostname, uri.port) {|http|
235
- http.request(req)
236
- }
237
- rescue Exception => e
238
- puts "Send request error: #{e}"
239
- end
240
-
241
- if res
242
- begin
243
- response = JSON.parse res.body
244
- rescue JSON::ParserError => e
245
- raise "Not a JSON type response from the server #{@api_url}. Probably not an API endpoint."
246
- end
247
- else
248
- nil
249
- end
250
- end
251
-
252
-
253
- end
254
28
  end
@@ -0,0 +1,253 @@
1
+ module AParserClient
2
+
3
+ class API
4
+ require "json"
5
+ require "open-uri"
6
+ require "net/http"
7
+
8
+ attr :api_url, :api_password, :alive
9
+
10
+ def initialize(api_url, api_password)
11
+ if api_url =~ URI::regexp
12
+ @api_url = api_url
13
+ @api_password = api_password
14
+ @alive = self.alive?
15
+ else
16
+ raise "Bad API URL provided."
17
+ end
18
+ end
19
+
20
+ def ping
21
+ request = {
22
+ password: @api_pass,
23
+ action: 'ping'
24
+ }
25
+ do_it request
26
+ end
27
+
28
+ #updates alive status
29
+ def alive?
30
+ @alive = ping ? true : false
31
+ end
32
+
33
+
34
+ def get_tasks_list(completed=false)
35
+ request = {
36
+ password: @api_password,
37
+ action: 'getTasksList',
38
+ data: {completed: completed ? 1 : 0}
39
+ }
40
+ do_it request
41
+ end
42
+
43
+ def get_task_state(task_id)
44
+ request = {
45
+ password: @api_password,
46
+ action: 'getTaskState',
47
+ data: {taskUid: task_id}
48
+ }
49
+ do_it request
50
+ end
51
+
52
+ def get_task_conf(task_id)
53
+ request = {
54
+ password: @api_password,
55
+ action: 'getTaskConf',
56
+ data: {taskUid: task_id}
57
+ }
58
+ do_it request
59
+ end
60
+
61
+
62
+ def get_info
63
+ request = {
64
+ password: @api_password,
65
+ action: 'info',
66
+ }
67
+ do_it request
68
+ end
69
+
70
+ def add_task(task_type='text', queries_array=[], queries_file=nil, config, preset, parsers, result_file_name)
71
+ request = {
72
+ password: @api_password,
73
+ action: 'addTask',
74
+ data: {
75
+ queriesFrom: task_type,
76
+ queries: (task_type == 'text' ? queries_array : queries_file),
77
+ configPreset: config,
78
+ preset: preset,
79
+ parsers: parsers,
80
+ resultsFileName: result_file_name
81
+ }
82
+ }
83
+ do_it request
84
+ end
85
+
86
+
87
+ def one_request(query, parser, preset='default', config_preset='default', options=[])
88
+ request = {
89
+ password: @api_password,
90
+ action: 'oneRequest',
91
+ data: {
92
+ query: query,
93
+ parser: parser,
94
+ configPreset: config_preset,
95
+ preset: preset,
96
+ options: options
97
+ }
98
+ }
99
+ do_it request
100
+ end
101
+
102
+ def bulk_request(queries, parser, preset, config_preset, threads, raw_results, need_data, options)
103
+ request = {
104
+ password: @api_password,
105
+ action: 'bulkRequest',
106
+ data: {
107
+ queries: queries,
108
+ parser: parser,
109
+ configPreset: config_preset,
110
+ preset: preset,
111
+ threads: threads,
112
+ rawResults: raw_results,
113
+ needData: need_data,
114
+ options: options
115
+ }
116
+ }
117
+ do_it request
118
+ end
119
+
120
+
121
+ def change_task_status(task_id, to_status)
122
+ request = {
123
+ password: @api_password,
124
+ action: 'changeTaskStatus',
125
+ data: {
126
+ taskUid: task_id,
127
+ toStatus: to_status
128
+ }
129
+ }
130
+ do_it request
131
+ end
132
+
133
+ def get_accounts_count
134
+ request = {
135
+ password: @api_password,
136
+ action: 'getAccountsCount',
137
+ data: {}
138
+ }
139
+ do_it request
140
+ end
141
+
142
+
143
+ def get_proxies
144
+ request = {
145
+ password: @api_password,
146
+ action: 'getProxies'
147
+ }
148
+ do_it request
149
+ end
150
+
151
+ def update!
152
+ request = {
153
+ password: @api_password,
154
+ action: 'update',
155
+ data: {}
156
+ }
157
+ do_it request
158
+ end
159
+
160
+ def get_task_results_file(task_id)
161
+ request = {
162
+ password: @api_password,
163
+ action: 'getTaskResultsFile',
164
+ data: {taskUid: task_id}
165
+ }
166
+ do_it request
167
+ end
168
+
169
+ def delete_task_results_file(task_id)
170
+ request = {
171
+ password: @api_password,
172
+ action: 'deleteTaskResultsFile',
173
+ data: {taskUid: task_id}
174
+ }
175
+ do_it request
176
+ end
177
+
178
+ def move_task(task_id, direction)
179
+ request = {
180
+ password: @api_password,
181
+ action: 'moveTask',
182
+ data: {
183
+ taskUid: task_id,
184
+ toStatus: direction
185
+ }
186
+ }
187
+ do_it request
188
+ end
189
+
190
+ def get_parser_info(parser_name)
191
+ request = {
192
+ password: @api_password,
193
+ action: 'getParserInfo',
194
+ data: {
195
+ parser: parser_name
196
+ }
197
+ }
198
+ do_it request
199
+ end
200
+
201
+
202
+ def get_parser_preset(parser_name, preset_name)
203
+ request = {
204
+ password: @api_password,
205
+ action: 'getParserInfo',
206
+ data: {
207
+ parser: parser_name,
208
+ reset: preset_name
209
+ }
210
+ }
211
+ do_it request
212
+ end
213
+
214
+
215
+ private # internal use only
216
+
217
+ def do_it(request)
218
+ request_body = request.to_json
219
+ response = send_request(request_body)
220
+ return response
221
+ end
222
+
223
+ def send_request(request)
224
+ uri = URI @api_url
225
+
226
+ req = Net::HTTP::Post.new uri
227
+ req.body = (request)
228
+ req.content_type = 'text/plain; charset=UTF-8'
229
+
230
+ begin
231
+ res = Net::HTTP.start(uri.hostname, uri.port) {|http|
232
+ http.request(req)
233
+ }
234
+ rescue Exception => e
235
+ puts "Send request error: #{e}"
236
+ end
237
+
238
+ if res
239
+ begin
240
+ response = JSON.parse res.body
241
+ rescue JSON::ParserError => e
242
+ raise "Not a JSON type response from the server #{@api_url}. Probably not an API endpoint."
243
+ end
244
+ else
245
+ nil
246
+ end
247
+ end
248
+
249
+
250
+ end
251
+
252
+
253
+ end
@@ -1,3 +1,3 @@
1
1
  module AParserClient
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  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.7
4
+ version: 0.1.8
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-27 00:00:00.000000000 Z
11
+ date: 2020-02-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -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: