adspower-client 1.0.8 → 1.0.9

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: d0b0359e814e6da477e31d71c4233e45a3fa390bb5b0d7261cb653ca74171c97
4
- data.tar.gz: c3f25e5ea1321af5642563748f69cd76707479dfb8963791c0936755cefcc1f6
3
+ metadata.gz: 9dd3f5b867718ddd2e21e1aab984d651cec9bf7f713b4edeb71a3b42bf0759bd
4
+ data.tar.gz: 6a88a31aa0817eeb9c10f5b0dfcd78b7952347465ffd86577d4163a3c5bfe353
5
5
  SHA512:
6
- metadata.gz: b8e05b735de4606502fafbba815d06d1e15ab2126d0563f1fb772af0ccdbb0228aa7ef95f3b86cf91656b5dcfe4729390b27ffcb8d52ed996995734c2db43871
7
- data.tar.gz: 866efa20033fdeddec050e1d81ab957d06238ce55d44a450311b2afe79c981528e8131f6d0d3209bf419ec7f8b86dcc7d0467bff466ce2d6cad63f61fff8dd75
6
+ metadata.gz: 4d6f9ead256561e209ca730845bb0440f3f56c02258c0b4b4cf18073cb1c0390028b75e40569bf8291c16935cd893d4436810fa62dc1ef28bd7d2bf143196caa
7
+ data.tar.gz: b7004600a91234ad992858335f987f4966ea32f7ad497b7ce483384a2ff2ca52e60116346cad5f45ed0dc7bf645fc97ac343019b1d54bea989debc94648b483a
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'adspower-client'
3
- s.version = '1.0.8'
3
+ s.version = '1.0.9'
4
4
  s.date = '2024-02-07'
5
5
  s.summary = "Ruby library for operating AdsPower API."
6
6
  s.description = "Ruby library for operating AdsPower API."
@@ -8,7 +8,7 @@ require 'watir'
8
8
  class AdsPowerClient
9
9
  # reference: https://localapi-doc-en.adspower.com/
10
10
  # reference: https://localapi-doc-en.adspower.com/docs/Rdw7Iu
11
- attr_accessor :key, :adspower_listener, :adspower_default_browser_version
11
+ attr_accessor :key, :port, :server_log, :adspower_listener, :adspower_default_browser_version
12
12
 
13
13
  # control over the drivers created, in order to don't create the same driver twice and don't generate memory leaks.
14
14
  # reference: https://github.com/leandrosardi/adspower-client/issues/4
@@ -16,11 +16,47 @@ class AdsPowerClient
16
16
 
17
17
  def initialize(h={})
18
18
  self.key = h[:key] # mandatory
19
- self.adspower_listener = h[:adspower_listener] || 'http://127.0.0.1:50325'
19
+ self.port = h[:port] || '50325'
20
+ self.server_log = h[:server_log] || '~/adspower-client.log'
21
+ self.adspower_listener = h[:adspower_listener] || 'http://127.0.0.1'
20
22
  self.adspower_default_browser_version = h[:adspower_default_browser_version] || '116'
21
23
  # self.profiles_created = []
22
24
  end
23
25
 
26
+ # return an array of PIDs of all the adspower_global processes running in the local computer.
27
+ def server_pids
28
+ `ps aux | grep "adspower_global" | grep -v grep | awk '{print $2}'`.split("\n")
29
+ end
30
+
31
+ # return true if there is any adspower_global process running in the local computer.
32
+ def server_running?
33
+ self.server_pids.size > 0
34
+ end
35
+
36
+ # run async command to start adspower server in headless mode.
37
+ # wait up to 10 seconds to start the server, or raise an exception.
38
+ def server_start(timeout=10)
39
+ `/usr/bin/adspower_global --headless=true --api-key=#{ADSPOWER_API_KEY} --api-port=#{ADSPOWER_PORT} > #{self.server_log} 2>&1 &`
40
+ # wait up to 10 seconds to start the server
41
+ timeout.times do
42
+ break if self.server_running?
43
+ sleep(1)
44
+ end
45
+ # add a delay of 5 more seconds
46
+ sleep(5)
47
+ # raise an exception if the server is not running
48
+ raise "Error: the server is not running" if self.server_running? == false
49
+ return
50
+ end
51
+
52
+ # kill all the adspower_global processes running in the local computer.
53
+ def server_stop
54
+ self.server_pids.each { |pid|
55
+ `kill -9 #{pid}`
56
+ }
57
+ return
58
+ end
59
+
24
60
  # send an GET request to "#{url}/status".
25
61
  # Return true if it responded successfully.
26
62
  #
@@ -28,7 +64,7 @@ class AdsPowerClient
28
64
  #
29
65
  def online?
30
66
  begin
31
- url = "#{self.adspower_listener}/status"
67
+ url = "#{self.adspower_listener}:#{port}/status"
32
68
  uri = URI.parse(url)
33
69
  res = Net::HTTP.get(uri)
34
70
  # show respose body
@@ -48,7 +84,7 @@ class AdsPowerClient
48
84
  # reference: https://localapi-doc-en.adspower.com/docs/Awy6Dg
49
85
  #
50
86
  def create
51
- url = "#{self.adspower_listener}/api/v1/user/create"
87
+ url = "#{self.adspower_listener}:#{port}/api/v1/user/create"
52
88
  body = {
53
89
  #'api_key' => self.key,
54
90
  'group_id' => '0',
@@ -69,7 +105,7 @@ class AdsPowerClient
69
105
  end
70
106
 
71
107
  def delete(id)
72
- url = "#{self.adspower_listener}/api/v1/user/delete"
108
+ url = "#{self.adspower_listener}:#{port}/api/v1/user/delete"
73
109
  body = {
74
110
  'api_key' => self.key,
75
111
  'user_ids' => [id],
@@ -88,7 +124,8 @@ class AdsPowerClient
88
124
  # reference: https://localapi-doc-en.adspower.com/docs/FFMFMf
89
125
  #
90
126
  def start(id, headless=false)
91
- uri = URI.parse("#{self.adspower_listener}/api/v1/browser/start?user_id=#{id}&headless=#{headless ? '1' : '0'}'}")
127
+ url = "#{self.adspower_listener}:#{port}/api/v1/browser/start?user_id=#{id}&headless=#{headless ? '1' : '0'}"
128
+ uri = URI.parse(url)
92
129
  res = Net::HTTP.get(uri)
93
130
  # show respose bo
94
131
  ret = JSON.parse(res)
@@ -109,7 +146,7 @@ class AdsPowerClient
109
146
  @@drivers[id] = nil
110
147
  end
111
148
 
112
- uri = URI.parse("#{self.adspower_listener}/api/v1/browser/stop?user_id=#{id}")
149
+ uri = URI.parse("#{self.adspower_listener}:#{port}/api/v1/browser/stop?user_id=#{id}")
113
150
  res = Net::HTTP.get(uri)
114
151
  # show respose body
115
152
  ret = JSON.parse(res)
@@ -125,7 +162,7 @@ class AdsPowerClient
125
162
  # reference: https://localapi-doc-en.adspower.com/docs/YjFggL
126
163
  #
127
164
  def check(id)
128
- url = "#{self.adspower_listener}/api/v1/browser/active?user_id=#{id}"
165
+ url = "#{self.adspower_listener}:#{port}/api/v1/browser/active?user_id=#{id}"
129
166
  uri = URI.parse(url)
130
167
  res = Net::HTTP.get(uri)
131
168
  # show respose body
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adspower-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi