adspower-client 1.0.8 → 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 +45 -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)
|
|
@@ -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
|