adspower-client 1.0.7 → 1.0.9

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: 7a4cbcbdabbd1f597745c5604f03d3eb052d998f81a5167737a552060d8c65af
4
- data.tar.gz: 05b42ad5140074a8488d4b9424fd6d723873daf3c901c5317352076aafc050b5
3
+ metadata.gz: 9dd3f5b867718ddd2e21e1aab984d651cec9bf7f713b4edeb71a3b42bf0759bd
4
+ data.tar.gz: 6a88a31aa0817eeb9c10f5b0dfcd78b7952347465ffd86577d4163a3c5bfe353
5
5
  SHA512:
6
- metadata.gz: c9c58297ba76e0c27b72d3c79ef185bf02814620869f2deb873820bfba211564e05cb728615623036d26683c0c0b9a6448e78cec85d1cff3fc14bdec6ed51e66
7
- data.tar.gz: 73537e1167da16936197c508bdb76c055d772bde2ef5b9666d67bf9e2da92de1b6355e2f73897dd190bec009959757fcba40d16348d75f6722da6f6930d4f5b1
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.7'
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)
@@ -103,7 +140,13 @@ class AdsPowerClient
103
140
  # reference: https://localapi-doc-en.adspower.com/docs/DXam94
104
141
  #
105
142
  def stop(id)
106
- uri = URI.parse("#{self.adspower_listener}/api/v1/browser/stop?user_id=#{id}")
143
+ # if the profile is running with driver, kill chromedriver
144
+ if @@drivers[id] && self.check(id)
145
+ @@drivers[id].quit
146
+ @@drivers[id] = nil
147
+ end
148
+
149
+ uri = URI.parse("#{self.adspower_listener}:#{port}/api/v1/browser/stop?user_id=#{id}")
107
150
  res = Net::HTTP.get(uri)
108
151
  # show respose body
109
152
  ret = JSON.parse(res)
@@ -119,7 +162,7 @@ class AdsPowerClient
119
162
  # reference: https://localapi-doc-en.adspower.com/docs/YjFggL
120
163
  #
121
164
  def check(id)
122
- url = "#{self.adspower_listener}/api/v1/browser/active?user_id=#{id}"
165
+ url = "#{self.adspower_listener}:#{port}/api/v1/browser/active?user_id=#{id}"
123
166
  uri = URI.parse(url)
124
167
  res = Net::HTTP.get(uri)
125
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.7
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi