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 +4 -4
- data/adspower-client.gemspec +1 -1
- data/lib/adspower-client.rb +51 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dd3f5b867718ddd2e21e1aab984d651cec9bf7f713b4edeb71a3b42bf0759bd
|
4
|
+
data.tar.gz: 6a88a31aa0817eeb9c10f5b0dfcd78b7952347465ffd86577d4163a3c5bfe353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d6f9ead256561e209ca730845bb0440f3f56c02258c0b4b4cf18073cb1c0390028b75e40569bf8291c16935cd893d4436810fa62dc1ef28bd7d2bf143196caa
|
7
|
+
data.tar.gz: b7004600a91234ad992858335f987f4966ea32f7ad497b7ce483384a2ff2ca52e60116346cad5f45ed0dc7bf645fc97ac343019b1d54bea989debc94648b483a
|
data/adspower-client.gemspec
CHANGED
data/lib/adspower-client.rb
CHANGED
@@ -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.
|
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
|
-
|
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
|
-
|
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
|