a_parser_client 0.1.10 → 0.1.12

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: 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.