actir 1.3.1 → 1.4.0
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/lib/actir/config.rb +22 -21
- data/lib/actir/parallel_tests/cli.rb +1 -1
- data/lib/actir/script/cookies/cookies.yaml +12 -0
- data/lib/actir/script/cookies_baidu.rb +40 -19
- data/lib/actir/version.rb +1 -1
- data/lib/actir/webdriver/browser.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27433c3533caed0417a12e065175d9c3724fa333
|
4
|
+
data.tar.gz: b5fc2249a62dbd097ff732cc631840d6aa9098f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fd1547beb07768fdc19c1b3c30c302832a04c22e18ddee211e58b2583ce913637819dc339058fddad1f0a0394444bb6424051596f8284bfbbbcabe22bcafe8b
|
7
|
+
data.tar.gz: 3adf250ea0091676d483f3864eb4e0c879d3dc594b88aba4fd3811503862d97d137a4603ed215bec1134bf2cd006c7898cd89415f03d60f9c37ab2650175bd78
|
data/lib/actir/config.rb
CHANGED
@@ -14,7 +14,7 @@ module Actir
|
|
14
14
|
|
15
15
|
class << self
|
16
16
|
|
17
|
-
attr_accessor :
|
17
|
+
attr_accessor :default_config_dir
|
18
18
|
|
19
19
|
#
|
20
20
|
# 从yaml文件中读取youzan的cookies
|
@@ -23,10 +23,10 @@ module Actir
|
|
23
23
|
#
|
24
24
|
# @return [Hash] youzan的cookies的hash
|
25
25
|
#
|
26
|
-
def youzan_cookies(youzan_user)
|
27
|
-
|
28
|
-
|
29
|
-
end
|
26
|
+
# def youzan_cookies(youzan_user)
|
27
|
+
# cfg_str = "cookies." + youzan_user
|
28
|
+
# get(cfg_str)
|
29
|
+
# end
|
30
30
|
|
31
31
|
#
|
32
32
|
# 从yaml文件中读取出所有内容
|
@@ -53,7 +53,7 @@ module Actir
|
|
53
53
|
#
|
54
54
|
# @return [Hash] 对应配置项的hash
|
55
55
|
#
|
56
|
-
def get(key)
|
56
|
+
def get(key, config_path = nil)
|
57
57
|
#按照点分割字符串
|
58
58
|
key_array = key.split(".")
|
59
59
|
#先取出数组中的第一个元素当做配置文件名称,并从数组中移除此元素
|
@@ -62,8 +62,8 @@ module Actir
|
|
62
62
|
cfg_name = key_array.shift
|
63
63
|
hash = {}
|
64
64
|
#加载yaml配置文件,加锁
|
65
|
-
lock(file_name) do
|
66
|
-
hash = cfg_name ? load_file(file(file_name))[cfg_name] : load_file(file(file_name))
|
65
|
+
lock(file_name, config_path) do
|
66
|
+
hash = cfg_name ? load_file(file(file_name, config_path))[cfg_name] : load_file(file(file_name, config_path))
|
67
67
|
end
|
68
68
|
#遍历key数组
|
69
69
|
until key_array.empty? do
|
@@ -84,16 +84,16 @@ module Actir
|
|
84
84
|
#
|
85
85
|
# value : [String] 要修改的值的字符串
|
86
86
|
#
|
87
|
-
def set(key, value)
|
87
|
+
def set(key, value, config_path = nil)
|
88
88
|
#按照点分割字符串
|
89
89
|
key_array = key.split(".")
|
90
90
|
#先取出数组中的第一个元素当做配置文件名称,并从数组中移除此元素
|
91
91
|
file_name = key_array.shift
|
92
92
|
cfg_str = key_array.shift
|
93
93
|
old_value = ""
|
94
|
-
lock(file_name) do
|
94
|
+
lock(file_name, config_path) do
|
95
95
|
#先读出所有的内容
|
96
|
-
str_array = IO.readlines(file(file_name))
|
96
|
+
str_array = IO.readlines(file(file_name, config_path))
|
97
97
|
str_array.each_with_index do |line, index|
|
98
98
|
if ( cfg_str != "" && line =~ /(\s*#{cfg_str}\:\s*)(.*)/ )
|
99
99
|
cfg_key = $1
|
@@ -109,7 +109,7 @@ module Actir
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
112
|
-
config_file = File.open(file(file_name), "w")
|
112
|
+
config_file = File.open(file(file_name, config_path), "w")
|
113
113
|
str_array.each do |line|
|
114
114
|
config_file.puts line
|
115
115
|
end
|
@@ -129,16 +129,16 @@ module Actir
|
|
129
129
|
#
|
130
130
|
# 不同则返回false
|
131
131
|
#
|
132
|
-
def is_same_day?(file_name)
|
132
|
+
def is_same_day?(file_name, config_path = nil)
|
133
133
|
now_date = Time.new.strftime("%m-%d")
|
134
|
-
modify_date = get_modify_time(file_name)
|
134
|
+
modify_date = get_modify_time(file_name, config_path)
|
135
135
|
now_date == modify_date
|
136
136
|
end
|
137
137
|
|
138
138
|
#获取配置文件的修改时间(只精确到日期,不考虑具体时间)
|
139
139
|
#返回String,格式为:04-27... 12-29
|
140
|
-
def get_modify_time(file_name)
|
141
|
-
sh_str = "ls -l " + file(file_name) + " | awk '{print $6 \"-\" $7}'"
|
140
|
+
def get_modify_time(file_name, config_path = nil)
|
141
|
+
sh_str = "ls -l " + file(file_name, config_path) + " | awk '{print $6 \"-\" $7}'"
|
142
142
|
stat_str = `#{sh_str}`
|
143
143
|
#从中取出月份和日期
|
144
144
|
stat_str =~ /(\d+).*\-(\d+)/
|
@@ -155,8 +155,8 @@ module Actir
|
|
155
155
|
end
|
156
156
|
|
157
157
|
# 多进程操作文件时加锁
|
158
|
-
def lock(file_name)
|
159
|
-
File.open(file(file_name), 'r') do |f|
|
158
|
+
def lock(file_name, config_path = nil)
|
159
|
+
File.open(file(file_name, config_path), 'r') do |f|
|
160
160
|
begin
|
161
161
|
f.flock File::LOCK_EX
|
162
162
|
yield
|
@@ -167,13 +167,14 @@ module Actir
|
|
167
167
|
end
|
168
168
|
|
169
169
|
#配置文件路径
|
170
|
-
def file(file_name)
|
170
|
+
def file(file_name, config_path = nil)
|
171
|
+
config_dir = (config_path == nil) ? default_config_dir : config_path
|
171
172
|
File.expand_path(File.join(config_dir, "/#{file_name}.yaml"), __FILE__)
|
172
173
|
end
|
173
174
|
|
174
175
|
#默认配置文件夹路径
|
175
|
-
def
|
176
|
-
@
|
176
|
+
def default_config_dir
|
177
|
+
@default_config_dir ||= File.join($project_path, "config")
|
177
178
|
end
|
178
179
|
|
179
180
|
private
|
@@ -60,7 +60,7 @@ module Actir
|
|
60
60
|
|
61
61
|
#更新百度支付-百付宝的cookies
|
62
62
|
#-u为强制更新,若没有加强制更新命令,则每天自动更新一次
|
63
|
-
if options[:update] || !(Actir::Config.is_same_day?("cookies"))
|
63
|
+
if options[:update] || !(Actir::Config.is_same_day?("cookies", Actir::CookiesBaidu.cookies_path))
|
64
64
|
begin
|
65
65
|
Actir::CookiesBaidu.update_all
|
66
66
|
rescue Exception => e
|
@@ -0,0 +1,12 @@
|
|
1
|
+
card1:
|
2
|
+
BAIDUID: "CA5C0BFFF8A6BCB719914F355E613A1E%3AFG%3D1"
|
3
|
+
BDUSS: "EFtRFVRZ3FQblIySk1xeTlvSTVRS3JPTEdyQ35iUXFxdGt1bFNmTXgzU3hZUE5XQUFBQUFBJCQAAAAAAAAAAAEAAAD-BrRddGVzdHdsMjAxNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALHTy1ax08tWV"
|
4
|
+
card2:
|
5
|
+
BAIDUID:
|
6
|
+
BDUSS:
|
7
|
+
card3:
|
8
|
+
BAIDUID:
|
9
|
+
BDUSS:
|
10
|
+
card4:
|
11
|
+
BAIDUID:
|
12
|
+
BDUSS:
|
@@ -7,7 +7,17 @@ module Actir
|
|
7
7
|
|
8
8
|
# 更新百度账号所有的配置文件
|
9
9
|
def update_all(address = [])
|
10
|
-
baidu_card = Actir::Config.get(
|
10
|
+
baidu_card = Actir::Config.get(baifubao_key)
|
11
|
+
# 确认目前可用的卡的数目和cookies文件上的是否匹配
|
12
|
+
# TODO 先不实现,cookies文件上的cards数量过多目前看不影响
|
13
|
+
# baidu_card_cookies = Actir::Config.get("cookies", cookies_path)
|
14
|
+
# if baidu_card_cookies != nill && baidu_card != nil
|
15
|
+
# if baidu_card_cookies.size > baidu_card.size
|
16
|
+
#
|
17
|
+
# end
|
18
|
+
# else
|
19
|
+
# raise "no baifubao cards"
|
20
|
+
# end
|
11
21
|
baidu_card.each do |card, value|
|
12
22
|
update_cookies(card, address)
|
13
23
|
end
|
@@ -16,16 +26,16 @@ module Actir
|
|
16
26
|
#将所有百度支付卡的available状态恢复为true
|
17
27
|
def re_available
|
18
28
|
#每次登陆都判断一下cookies文件的上一次修改时间和当前时间
|
19
|
-
#如果日期不同,则刷新所有的
|
20
|
-
unless Actir::Config.is_same_day?("cookies")
|
21
|
-
Actir::Config.lock("
|
22
|
-
str_array = IO.readlines(
|
29
|
+
#如果日期不同,则刷新所有的pay文件中baidu-card的状态
|
30
|
+
unless Actir::Config.is_same_day?("cookies", cookies_path)
|
31
|
+
Actir::Config.lock("pay") do
|
32
|
+
str_array = IO.readlines(baifubao_account_file)
|
23
33
|
str_array.each_with_index do |line, index|
|
24
34
|
if line =~ /available\:\s*false/
|
25
35
|
str_array[index] = line.gsub(/false/, 'true')
|
26
36
|
end
|
27
37
|
end
|
28
|
-
cookiesfile = File.open(
|
38
|
+
cookiesfile = File.open(baifubao_account_file, 'w')
|
29
39
|
str_array.each do |line|
|
30
40
|
cookiesfile.puts line
|
31
41
|
end
|
@@ -40,10 +50,14 @@ module Actir
|
|
40
50
|
# old_config = Actir::Config.config_dir
|
41
51
|
# Actir::Config.config_dir = script_config_path
|
42
52
|
#通过配置文件判断取出可用的卡的参数
|
43
|
-
baidu_card = Actir::Config.get(
|
53
|
+
baidu_card = Actir::Config.get(baifubao_key)
|
44
54
|
card = {}
|
45
55
|
baidu_card.each do |key, value|
|
46
56
|
if value["available"] == true
|
57
|
+
# 顺便取一下cookies
|
58
|
+
baidu_card_cookies = Actir::Config.get("cookies." + key, cookies_path)
|
59
|
+
value["BAIDUID"] = baidu_card_cookies["BAIDUID"]
|
60
|
+
value["BDUSS"] = baidu_card_cookies["BDUSS"]
|
47
61
|
#有可用的卡,取出cookies等参数
|
48
62
|
card.store(key, value)
|
49
63
|
break
|
@@ -56,7 +70,7 @@ module Actir
|
|
56
70
|
# 设置不可用的卡
|
57
71
|
# 入参传入卡的key
|
58
72
|
def set_useless_card(card)
|
59
|
-
Actir::Config.set("
|
73
|
+
Actir::Config.set(baifubao_key + "." + card + "." + "available", "false")
|
60
74
|
end
|
61
75
|
|
62
76
|
# 更新baidu_cookies失败后的清理操作。目前需要手动调用,后续优化
|
@@ -66,14 +80,12 @@ module Actir
|
|
66
80
|
end
|
67
81
|
end
|
68
82
|
|
69
|
-
private
|
70
|
-
|
71
83
|
# 更新配置文件中的baidu_cookies
|
72
84
|
def update_cookies(card, address = [])
|
73
85
|
#打开百付宝
|
74
86
|
open_baifubao(address)
|
75
87
|
#获取对应卡的账号密码
|
76
|
-
args = Actir::Config.get("
|
88
|
+
args = Actir::Config.get(baifubao_key + "." + card)
|
77
89
|
#登录百付宝
|
78
90
|
login_baifubao(args["username"], args["password"])
|
79
91
|
#获取cookies
|
@@ -109,7 +121,7 @@ module Actir
|
|
109
121
|
|
110
122
|
# 获取cookies
|
111
123
|
def get_baifubao_cookies
|
112
|
-
sleep
|
124
|
+
sleep 3
|
113
125
|
id = @browser.cookies[:BAIDUID][:value]
|
114
126
|
ss = @browser.cookies[:BDUSS][:value]
|
115
127
|
@browser.close
|
@@ -120,20 +132,31 @@ module Actir
|
|
120
132
|
|
121
133
|
def modify_cookies(card, cookies)
|
122
134
|
cookies.each do |key, value|
|
123
|
-
Actir::Config.set("cookies.
|
135
|
+
Actir::Config.set("cookies" + "." + card + "." + key.to_s , "\"" + value.to_s + "\"", cookies_path)
|
124
136
|
end
|
125
137
|
end
|
126
138
|
|
127
|
-
#
|
128
|
-
def
|
129
|
-
File.join(File.dirname(__FILE__), "
|
139
|
+
# 配置文件的上一级路径
|
140
|
+
def cookies_path
|
141
|
+
File.join(File.dirname(__FILE__), "cookies")
|
130
142
|
end
|
131
143
|
|
132
144
|
# 配置文件相对路径
|
133
145
|
def cookies_file
|
134
|
-
File.join(
|
146
|
+
File.join(File.dirname(__FILE__), "cookies", "/cookies.yaml")
|
135
147
|
end
|
136
148
|
|
149
|
+
# 百度账号配置文件
|
150
|
+
def baifubao_account_file
|
151
|
+
File.join(Actir::Config.default_config_dir, "/pay.yaml")
|
152
|
+
end
|
153
|
+
|
154
|
+
def baifubao_key
|
155
|
+
"pay.baifubao"
|
156
|
+
end
|
157
|
+
|
158
|
+
private
|
159
|
+
|
137
160
|
def text_baifubao_username
|
138
161
|
@browser.text_field(:id => 'TANGRAM__PSP_4__userName')
|
139
162
|
end
|
@@ -156,5 +179,3 @@ module Actir
|
|
156
179
|
|
157
180
|
end
|
158
181
|
|
159
|
-
#Actir::CookiesBaidu.re_available
|
160
|
-
|
data/lib/actir/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hub
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/actir/parallel_tests/test/result.rb
|
144
144
|
- lib/actir/parallel_tests/test/runner.rb
|
145
145
|
- lib/actir/remote.rb
|
146
|
+
- lib/actir/script/cookies/cookies.yaml
|
146
147
|
- lib/actir/script/cookies_baidu.rb
|
147
148
|
- lib/actir/version.rb
|
148
149
|
- lib/actir/webdriver/browser.rb
|