a_parser_client 0.1.10 → 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: 9ed578569a32738b77fd112c9a9b5c4be1405b3d6ce338e2c3bb0a64874d76a4
4
- data.tar.gz: 42647973d9272ffaae8b94989f1b784f5a656d5b526799e44fc397714ba16aad
3
+ metadata.gz: bb17cbf3c7f7242c9b4b59029f9e0b4cc1b5f69d0232047cf9876a78f654579d
4
+ data.tar.gz: ef2ab37b08492563235b4fd80de9462f86c684b4cea8d42da1daea17c5643bc0
5
5
  SHA512:
6
- metadata.gz: b6b171c76b1d02e80c944d3e0925004594afaa82cea3e18c89e9fb4b216147e6ac24a27a4b161c9f39917fe1c537b6a4f5916f3f2544ee4ca2e908ceaaaf8b4e
7
- data.tar.gz: e7a02d9b66cefdf14c0753fe95b231290f4fe9d5f7e92d7c48953ffaa7c082c16cf4129a8df55b3f1501b091d2a4b685b46c8bb7e1a4092c005f16c14b5b7728
6
+ metadata.gz: 67e35c398c10bbf1016b9c204f8dd5a71568442b9a9abd023c1da0af5f8882c9a7fb5ec59c1f16123855f74b705f3352757e8f92a137b9483fa298bfa50e72c6
7
+ data.tar.gz: 19c44de33e962c58597eb226584ae4e19cf2be134d82263f021592ca6301b85de32d408b971494e6fe9b87a91a8f82fd4da61f0880e64665e953a7c16d69eef5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- a_parser_client (0.1.10)
4
+ a_parser_client (0.1.12)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,4 +32,4 @@ DEPENDENCIES
32
32
  rspec (~> 3.0)
33
33
 
34
34
  BUNDLED WITH
35
- 2.0.2
35
+ 2.2.6
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,30 +1,27 @@
1
- require "a_parser_client/version"
2
- require "a_parser_client/api"
1
+ # frozen_string_literal: true
2
+
3
+ require 'a_parser_client/version'
4
+ require 'a_parser_client/api'
3
5
 
4
6
  module AParserClient
5
- class Error < StandardError; end
7
+ class Error < StandardError; end
6
8
 
7
- class Control
8
- attr_reader :tasks, :driver
9
+ class Control
10
+ attr_reader :tasks, :driver
9
11
 
10
- def initialize(api_driver)
11
- @driver = api_driver
12
+ def initialize(api_driver)
13
+ @driver = api_driver
12
14
 
13
- if @driver
14
- unless @driver.alive?
15
- raise "API driver should be alive to take control of parser."
16
- end
15
+ raise 'No API driver provided.' unless @driver
17
16
 
18
- @tasks = fetch_tasks
19
- else
20
- raise "No API driver provided."
21
- end
17
+ raise 'API driver should be alive to take control of parser.' unless @driver.alive?
22
18
 
23
- end
19
+ @tasks = fetch_tasks
20
+ end
24
21
 
25
- def fetch_tasks
26
- data = @driver.get_tasks_list
27
- data['data'] ? data['data'] : []
28
- end
29
- end
22
+ def fetch_tasks
23
+ data = @driver.get_tasks_list
24
+ data['data'] || []
25
+ end
26
+ end
30
27
  end
@@ -1,253 +1,238 @@
1
- module AParserClient
1
+ # frozen_string_literal: true
2
2
 
3
+ module AParserClient
3
4
  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
-
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
250
237
  end
251
-
252
-
253
- end
238
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AParserClient
2
- VERSION = "0.1.10"
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.10
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-03-05 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
@@ -97,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubyforge_project:
101
- rubygems_version: 2.7.7
100
+ rubygems_version: 3.1.4
102
101
  signing_key:
103
102
  specification_version: 4
104
103
  summary: A simple inerface to A-Parser API.