pindo 4.7.5 → 4.7.6

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: e8159df0872fa738e51e47c58871fd774599288933ad5b0abb06a1f75d034576
4
- data.tar.gz: 7092870505178a36f55cc54d5eaa8248314a0f5c0af5188f446dab6e42bb65d0
3
+ metadata.gz: d67d718e2507fa330a19b44df9b7abefb0ae417dac58a4c5d431cf3c9f63dc13
4
+ data.tar.gz: 3377d33ac73c5c5024beb48de2fa30d0b1813f0637eae2d990a30eb0ae37f9f7
5
5
  SHA512:
6
- metadata.gz: bb1cf7c60caf44e8d92ee0d0cab2118c63fd842c4d0a27a3d4e0a0b33ac03d01a3a4b59b29c7589f30476f957dcd5011c4b0753bb155aa1efe2762fa19730ee3
7
- data.tar.gz: b734c08d987650edd74d00b63a1c7bd9eec5dd7ba5ba947691f5a82a539b04e09fb3d96d76d5fde205f6fbca1bab6ec23137afc5503ad0cd42a9d8edc6b0a8d7
6
+ metadata.gz: '01038d7dfe0a9b0705056798db4cdbd6897baadb944c9d9808910526a7dead73d5f5573efa73bd0ef9d7dad5dd0e14c28628046b5dbb658571f5865afff2cf86'
7
+ data.tar.gz: c23e4788703dc11aa106d94c12c8c28ade2d5e0c72241b77bd75263b1e36115abb0a4ff1b633d37ccd9a784f51252f45e1ea8899ce676a91e832b775d386b760
@@ -1,4 +1,6 @@
1
+
1
2
  require 'openssl'
3
+ require 'match'
2
4
 
3
5
  module Pindo
4
6
 
@@ -113,7 +113,6 @@ module Pindo
113
113
  end
114
114
 
115
115
  object_key = upload_path + file_uuid + extension
116
-
117
116
  puts "上传路径: #{object_key}"
118
117
  puts
119
118
 
@@ -3,6 +3,7 @@ require 'uri'
3
3
  require 'json'
4
4
  require 'faraday'
5
5
  require 'pindo/base/aeshelper'
6
+ require 'faraday/retry'
6
7
 
7
8
  module Pindo
8
9
 
@@ -24,8 +25,18 @@ module Pindo
24
25
  password: ENV['HTTP_PROXY_PASSWORD']
25
26
  }
26
27
 
27
- con = Faraday.new
28
- con.proxy = proxy_options.compact if proxy_options[:uri]
28
+ retry_options = {
29
+ max: 3, # Retry a failed request up to 5 times
30
+ interval: 0.5, # First retry after 0.5s
31
+ backoff_factor: 2, # Double the delay for each subsequent retry
32
+ interval_randomness: 0.5, # Specify "jitter" of up to 50% of interval
33
+ }
34
+
35
+ con = Faraday.new do |config|
36
+ config.request :retry, retry_options
37
+ config.proxy = proxy_options.compact if proxy_options[:uri]
38
+ end
39
+
29
40
  con
30
41
  end
31
42
 
@@ -0,0 +1,291 @@
1
+
2
+ require 'uri'
3
+ require 'json'
4
+ require 'faraday'
5
+ require 'securerandom'
6
+ require 'pindo/base/aeshelper'
7
+ require 'typhoeus'
8
+
9
+ module Pindo
10
+
11
+
12
+ class PgyerUploadClient
13
+
14
+
15
+ attr_accessor :token
16
+
17
+ attr_accessor :region
18
+ attr_accessor :bucket_name
19
+
20
+ attr_accessor :default_url
21
+ attr_accessor :attach_url
22
+
23
+
24
+ def initialize()
25
+
26
+ begin
27
+
28
+ @pgyer_token_file = File.join(File::expand_path(Pindoconfig.instance.pindo_dir), ".pgyer_token")
29
+ config_file = File.join(File::expand_path(Pindoconfig.instance.pindo_common_configdir), "pgyer_client_config.json")
30
+ config_json = JSON.parse(File.read(config_file))
31
+
32
+ @region = config_json["region"]
33
+ @bucket_name = config_json["bucket_name"]
34
+ @default_url = config_json["default_url"]
35
+ @attach_url = config_json["attach_url"]
36
+
37
+ @use_local_wechat_url = config_json["use_local_wechat_url"]
38
+ @baseurl = config_json["pgyerapps_base_url"]
39
+ @request_config = config_json["pgyerapps_req_config"]
40
+ @pgyer_aes_key = config_json["pgyerapps_aes_key"]
41
+
42
+ @token = load_token
43
+
44
+ rescue => error
45
+ raise Informative, "PgyerUploadClient 初始化失败!"
46
+ end
47
+
48
+ end
49
+
50
+ def load_token()
51
+ token = nil
52
+ if File.exist?(@pgyer_token_file)
53
+ begin
54
+ data = File.read(@pgyer_token_file)
55
+
56
+ data_string = AESHelper::aes_128_ecb_decrypt(@pgyer_aes_key, data)
57
+ temp_token = data_string
58
+ temp_token = JSON.parse(data_string)
59
+ if !temp_token.nil? && !temp_token["token"].nil? && !temp_token["username"].nil?
60
+ token = temp_token
61
+ end
62
+ rescue => error
63
+ raise Informative, "PgyerUploadClient 加载pgyer token 失败!!!"
64
+ end
65
+ end
66
+ return token
67
+ end
68
+
69
+ def upload_file(binary_file:nil, isAttach:false)
70
+
71
+ extension = File.extname(binary_file)
72
+ filename = File.basename(binary_file)
73
+ filesize = File.size(binary_file)
74
+ size_level = 1024 * 1024
75
+ file_bytes = File.binread(binary_file)
76
+ checksum = Digest::MD5.hexdigest(file_bytes)
77
+ file_uuid = SecureRandom.uuid
78
+ total_m = sprintf("%.2f", 1.00 * filesize / 1024 /1024 )
79
+
80
+
81
+
82
+ upload_path = @default_url
83
+ content_disposition = nil
84
+ if isAttach
85
+ upload_path = @default_url + @attach_url
86
+ content_disposition = "attachment; filename=#{filename}"
87
+ end
88
+
89
+ object_key = upload_path + file_uuid + extension
90
+
91
+ puts "文件路径: #{binary_file}"
92
+ puts "文件大小: #{total_m}M"
93
+ puts "上传路径: #{object_key}"
94
+ puts
95
+
96
+
97
+ @upload_total_size = filesize
98
+
99
+
100
+ upload_result = nil
101
+
102
+ file_size_param = 1.00 * filesize / 1024 /1024
103
+ result_data = post_upload_url_req(upload_key:object_key, file_size:file_size_param.ceil)
104
+
105
+ upload_id= result_data["data"]["uploadId"]
106
+ upload_params_list = result_data["data"]["uploadParamsList"]
107
+
108
+
109
+
110
+ Funlog.instance.fancyinfo_start("开始上传...")
111
+
112
+ eTags = []
113
+ eTags = single_task_upload_data_req(binary_file:binary_file, upload_params_list:upload_params_list)
114
+
115
+ result_data = post_upload_finish_req(upload_key:object_key, upload_id:upload_id, eTags:eTags)
116
+
117
+ if result_data["code"] == 200
118
+ upload_result = object_key
119
+ # set_progress(filesize, filesize)
120
+ Funlog.instance.fancyinfo_success("文件#{binary_file} 上传成功! 😎😎😎")
121
+ else
122
+ upload_result = nil
123
+ Funlog.instance.fancyinfo_error("文件#{binary_file} 上传失败! 😭😭😭")
124
+ end
125
+
126
+ return upload_result
127
+
128
+ end
129
+
130
+ def single_task_upload_data_req(binary_file:nil, upload_params_list:nil)
131
+ filesize = File.size(binary_file)
132
+ eTags = []
133
+ if !upload_params_list.nil? && upload_params_list.length > 0
134
+ for i in 0..upload_params_list.length-1 do
135
+ part_result = single_task_upload_part_data_req(filesize:filesize, binary_file:binary_file, upload_url:upload_params_list[i]["signedUrl"], part_no:upload_params_list[i]["partNo"])
136
+ eTag_item = { partNumber: upload_params_list[i]["partNo"], tag: part_result}
137
+ eTags << eTag_item
138
+ end
139
+ end
140
+
141
+ return eTags
142
+ end
143
+
144
+ def single_task_upload_part_data_req(filesize:nil, binary_file:nil, upload_url:nil, part_no:nil)
145
+
146
+ # puts "start upload part #{part_no} -----"
147
+
148
+ file_size_ele = 1024 * 1024 * 5 #5M
149
+ start_position = file_size_ele * (part_no -1)
150
+ if part_no * file_size_ele > filesize
151
+ read_length = filesize - start_position
152
+ else
153
+ read_length = file_size_ele
154
+ end
155
+
156
+ file = File.open(binary_file, "rb")
157
+ file.seek(start_position)
158
+ put_data = file.read(read_length)
159
+
160
+
161
+ request = nil
162
+
163
+ proxy_options = {
164
+ proxy: ENV['http_proxy'] || ENV['https_proxy'],
165
+ proxyuserpwd: "#{ENV['HTTP_PROXY_USER']}:#{ENV['HTTP_PROXY_PASSWORD']}"
166
+ }
167
+
168
+ if proxy_options[:proxy]
169
+ request = Typhoeus::Request.new(
170
+ upload_url,
171
+ method: :put,
172
+ proxy: proxy_options[:proxy],
173
+ proxyuserpwd: proxy_options[:proxyuserpwd],
174
+ :body => put_data,
175
+ :headers => {
176
+ 'Content-Type' => 'application/octet-stream',
177
+ 'token' => @token['token'],
178
+ 'Content-Length' => read_length.to_s
179
+ }
180
+ )
181
+ else
182
+ request = Typhoeus::Request.new(
183
+ upload_url,
184
+ method: :put,
185
+ :body => put_data,
186
+ :headers => {
187
+ 'Content-Type' => 'application/octet-stream',
188
+ 'token' => @token['token'],
189
+ 'Content-Length' => read_length.to_s
190
+ }
191
+ )
192
+ end
193
+
194
+
195
+ @upload_num = start_position
196
+ request.on_progress do |dltotal, dlnow, ultotal, ulnow|
197
+ # puts "dltotal (#{dltotal}), dlnow (#{dlnow}), ultotal (#{ultotal}), ulnow (#{ulnow})"
198
+ if ulnow
199
+ @upload_num = start_position + ulnow
200
+ set_progress(@upload_num, filesize)
201
+ end
202
+ end
203
+
204
+ return_data = nil
205
+ request.on_complete do |response|
206
+ if response.success?
207
+ # puts "on_complete success"
208
+ return_data = response.headers["ETag"]
209
+ else
210
+ # puts "on_complete fail"
211
+ end
212
+ end
213
+
214
+ request.run
215
+
216
+ return return_data
217
+
218
+ end
219
+
220
+ def post_upload_finish_req(upload_key:nil, upload_id:nil, eTags:nil)
221
+
222
+ boss_url = @baseurl + @request_config["multi_signed_url_upload"]
223
+
224
+ body_params = {
225
+ functionName:"finish",
226
+ fileKey:upload_key,
227
+ uploadId:upload_id,
228
+ tags:eTags
229
+ }
230
+
231
+ con = HttpClient.create_instance_with_proxy
232
+ res = con.post do |req|
233
+ req.url boss_url
234
+ req.headers['Content-Type'] = 'application/json'
235
+ req.headers['token'] = @token["token"]
236
+ req.body = body_params.to_json
237
+ end
238
+
239
+
240
+ result_data = nil
241
+ if !res.body.nil?
242
+ result_data = JSON.parse(res.body)
243
+ end
244
+
245
+ return result_data
246
+
247
+ end
248
+
249
+
250
+ def post_upload_url_req(upload_key:nil, file_size:nil)
251
+
252
+ # puts "post_upload_url_req start ..."
253
+ # puts "file_size: #{file_size} MB"
254
+ boss_url = @baseurl + @request_config["multi_signed_url_upload"]
255
+
256
+ body_params = {
257
+ functionName:"start",
258
+ fileKey:upload_key,
259
+ fileSize:file_size
260
+ }
261
+
262
+ con = HttpClient.create_instance_with_proxy
263
+ res = con.post do |req|
264
+ req.url boss_url
265
+ req.headers['Content-Type'] = 'application/json'
266
+ req.headers['token'] = @token["token"]
267
+ req.body = body_params.to_json
268
+ end
269
+
270
+
271
+ result_data = nil
272
+ if !res.body.nil?
273
+ result_data = JSON.parse(res.body)
274
+ end
275
+
276
+ # puts JSON.pretty_generate(result_data)
277
+
278
+ return result_data
279
+
280
+ end
281
+
282
+ def set_progress(index_num, total_num, char ='>' )
283
+ progress_str = sprintf("%.2f", 100.0 * index_num / total_num )
284
+ total_size = sprintf("%.2f", 1.00 * total_num / 1024 /1024 )
285
+ index = 40.0 * index_num / total_num
286
+ upload_message = "已上传:#{progress_str}\%【" + (char * (index/1).floor).ljust(40.0, '_') + "】Total: #{total_size} M"
287
+ Funlog.instance.fancyinfo_update(upload_message)
288
+ end
289
+
290
+ end
291
+ end
@@ -1,7 +1,7 @@
1
1
  require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'json'
4
- require "fastlane"
4
+ # require "fastlane"
5
5
  require "spaceship"
6
6
 
7
7
  module Pindo
@@ -1,5 +1,4 @@
1
1
  require 'fileutils'
2
- require 'match'
3
2
  require 'pindo/module/build/swarkhelper'
4
3
  require 'pindo/module/cert/xcodecerthelper'
5
4
  require 'pindo/module/cert/certhelper'
@@ -2,7 +2,6 @@ require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'json'
4
4
  require 'xcodeproj'
5
- require 'match'
6
5
  require 'yaml'
7
6
 
8
7
  module Pindo
@@ -1,5 +1,4 @@
1
1
  require 'fileutils'
2
- require 'match'
3
2
  require 'pindo/client/giteeclient'
4
3
 
5
4
  module Pindo
@@ -58,91 +58,93 @@ module Pindo
58
58
 
59
59
 
60
60
  def login
61
- Spaceship::Portal.login(pindo_single_config.demo_apple_id)
62
- Spaceship::Portal.select_team
61
+ # Spaceship::Portal.login(pindo_single_config.demo_apple_id)
62
+ # Spaceship::Portal.select_team
63
63
  end
64
64
 
65
65
  def fetch_device
66
66
 
67
67
 
68
- devices = Spaceship::Portal.device.all(include_disabled: true).select do |device|
69
- device.enabled?
70
- end
71
- mac_disabled_devices = Spaceship::Portal.device.all(mac: true, include_disabled: true).select do |device|
72
- device.enabled?
73
- end
68
+ # devices = Spaceship::Portal.device.all(include_disabled: true).select do |device|
69
+ # device.enabled?
70
+ # end
71
+ # mac_disabled_devices = Spaceship::Portal.device.all(mac: true, include_disabled: true).select do |device|
72
+ # device.enabled?
73
+ # end
74
74
 
75
- my_total_devices = {}
75
+ # my_total_devices = {}
76
76
 
77
- devices.each do |item|
78
- device_item = DeviceItem.new
79
- device_item.name = item.name
80
- device_item.name = device_item.name.downcase
81
- device_item.udid = item.udid
82
- device_item.platform = item.platform
83
- device_item.device_model = item.model
84
- device_item.device_type = item.device_type
77
+ # devices.each do |item|
78
+ # device_item = DeviceItem.new
79
+ # device_item.name = item.name
80
+ # device_item.name = device_item.name.downcase
81
+ # device_item.udid = item.udid
82
+ # device_item.platform = item.platform
83
+ # device_item.device_model = item.model
84
+ # device_item.device_type = item.device_type
85
85
 
86
- device_item.device_description = ""
87
- my_total_devices[item.udid] = device_item
88
- end
86
+ # device_item.device_description = ""
87
+ # my_total_devices[item.udid] = device_item
88
+ # end
89
89
 
90
- mac_disabled_devices.each do |item|
91
- # puts item
92
- device_item = DeviceItem.new
93
- device_item.name = item.name
94
- device_item.name = device_item.name.downcase
95
- device_item.udid = item.udid
96
- device_item.platform = item.platform
97
- device_item.device_model = item.model
98
- device_item.device_type = item.device_type
99
- device_item.device_description = ""
100
- my_total_devices[item.udid] = device_item
101
- end
90
+ # mac_disabled_devices.each do |item|
91
+ # # puts item
92
+ # device_item = DeviceItem.new
93
+ # device_item.name = item.name
94
+ # device_item.name = device_item.name.downcase
95
+ # device_item.udid = item.udid
96
+ # device_item.platform = item.platform
97
+ # device_item.device_model = item.model
98
+ # device_item.device_type = item.device_type
99
+ # device_item.device_description = ""
100
+ # my_total_devices[item.udid] = device_item
101
+ # end
102
102
 
103
103
 
104
104
 
105
- use_devices = read_user_csv()
105
+ # use_devices = read_user_csv()
106
106
 
107
- use_devices.each do |key, item|
108
- if !my_total_devices[key].nil?
107
+ # use_devices.each do |key, item|
108
+ # if !my_total_devices[key].nil?
109
109
 
110
- if !item.device_description.nil?
111
- my_total_devices[key].device_description = item.device_description
112
- end
113
- if my_total_devices[key].device_description.nil? || my_total_devices[key].device_description.eql?("")
114
- my_total_devices[key].device_description = item.name.to_s.downcase
115
- end
110
+ # if !item.device_description.nil?
111
+ # my_total_devices[key].device_description = item.device_description
112
+ # end
113
+ # if my_total_devices[key].device_description.nil? || my_total_devices[key].device_description.eql?("")
114
+ # my_total_devices[key].device_description = item.name.to_s.downcase
115
+ # end
116
116
 
117
- if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
118
- my_total_devices[key].device_model = item.device_model
117
+ # if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
118
+ # my_total_devices[key].device_model = item.device_model
119
119
 
120
- end
121
- if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
122
- my_total_devices[key].device_model = item.name.to_s.downcase
123
- end
124
- end
125
- end
120
+ # end
121
+ # if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
122
+ # my_total_devices[key].device_model = item.name.to_s.downcase
123
+ # end
124
+ # end
125
+ # end
126
126
 
127
127
 
128
128
 
129
129
 
130
- pgyer_devices = read_apppgyer_csv()
131
- pgyer_devices.each do |key, item|
132
- if !my_total_devices[key].nil?
130
+ # pgyer_devices = read_apppgyer_csv()
131
+ # pgyer_devices.each do |key, item|
132
+ # if !my_total_devices[key].nil?
133
+
134
+ # if !item.device_description.nil?
135
+ # my_total_devices[key].device_description = item.device_description
136
+ # end
137
+ # end
138
+ # end
133
139
 
134
- if !item.device_description.nil?
135
- my_total_devices[key].device_description = item.device_description
136
- end
137
- end
138
- end
139
140
 
141
+ my_total_devices = read_user_csv()
140
142
 
141
- # my_total_devices = read_user_csv()
143
+ JSON.pretty_generate(my_total_devices)
142
144
 
143
145
 
144
146
  write_appstore_text(devices:my_total_devices)
145
- # write_user_csv(devices:my_total_devices)
147
+ write_user_csv(devices:my_total_devices)
146
148
  write_apppgyer_csv(devices:my_total_devices)
147
149
 
148
150
  end
@@ -155,11 +157,13 @@ module Pindo
155
157
  str_text = "DEVICE ID\tDEVICE NAME\tDEVICE PLATFORM\n"
156
158
  devices.each do |key, device|
157
159
  if device.platform.nil? || !(device.platform.to_s.eql?("ios") || device.platform.to_s.eql?("mac"))
158
- if device.device_type.to_s.downcase!.eql?("mac")
160
+
161
+ if device.device_type.to_s.strip.downcase.eql?("mac")
159
162
  device.platform = "mac"
160
163
  else
161
164
  device.platform = "ios"
162
165
  end
166
+
163
167
  end
164
168
  str = String.new
165
169
  str = str + device.udid
@@ -268,7 +272,7 @@ module Pindo
268
272
  line_num += 1
269
273
  end
270
274
  end
271
- # puts devices
275
+ puts devices
272
276
  return devices
273
277
 
274
278
  end
@@ -1,5 +1,5 @@
1
1
 
2
- require 'match'
2
+
3
3
  require 'openssl'
4
4
  require 'pindo/base/aeshelper'
5
5
  require 'pindo/module/cert/keychainhelper'
@@ -5,7 +5,8 @@ require 'json'
5
5
  require 'faraday'
6
6
  require "rqrcode"
7
7
  require 'pindo/client/pgyerclient'
8
- require 'pindo/client/aws3sclient'
8
+ # require 'pindo/client/aws3sclient'
9
+ require 'pindo/client/pgyeruploadclient'
9
10
 
10
11
 
11
12
  module Pindo
@@ -171,7 +172,8 @@ module Pindo
171
172
  puts description
172
173
 
173
174
 
174
- aws_client = AWSS3Client.new
175
+ # aws_client = AWSS3Client.new
176
+ aws_client = PgyerUploadClient.new
175
177
  upload_res = aws_client.upload_file(binary_file:ipa_file_upload)
176
178
 
177
179
  attach_key_url = nil
@@ -202,6 +204,8 @@ module Pindo
202
204
  })
203
205
 
204
206
  return result_data
207
+ else
208
+ raise Informative, "上传失败!"
205
209
  end
206
210
 
207
211
 
data/lib/pindo/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Pindo
2
2
 
3
- VERSION = "4.7.5"
3
+ VERSION = "4.7.6"
4
4
 
5
5
  class VersionCheck
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.5
4
+ version: 4.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-25 00:00:00.000000000 Z
11
+ date: 2024-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide
@@ -36,60 +36,40 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.11'
39
+ version: '1.15'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 1.11.3
42
+ version: 1.15.2
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '1.11'
49
+ version: '1.15'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 1.11.3
53
- - !ruby/object:Gem::Dependency
54
- name: xcodeproj
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 1.14.0
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '2.0'
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 1.14.0
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '2.0'
52
+ version: 1.15.2
73
53
  - !ruby/object:Gem::Dependency
74
54
  name: fastlane
75
55
  requirement: !ruby/object:Gem::Requirement
76
56
  requirements:
77
57
  - - "~>"
78
58
  - !ruby/object:Gem::Version
79
- version: '2.211'
59
+ version: '2.220'
80
60
  - - ">="
81
61
  - !ruby/object:Gem::Version
82
- version: 2.11.0
62
+ version: 2.220.0
83
63
  type: :runtime
84
64
  prerelease: false
85
65
  version_requirements: !ruby/object:Gem::Requirement
86
66
  requirements:
87
67
  - - "~>"
88
68
  - !ruby/object:Gem::Version
89
- version: '2.211'
69
+ version: '2.220'
90
70
  - - ">="
91
71
  - !ruby/object:Gem::Version
92
- version: 2.11.0
72
+ version: 2.220.0
93
73
  - !ruby/object:Gem::Dependency
94
74
  name: fastimage
95
75
  requirement: !ruby/object:Gem::Requirement
@@ -151,25 +131,45 @@ dependencies:
151
131
  - !ruby/object:Gem::Version
152
132
  version: 2.2.0
153
133
  - !ruby/object:Gem::Dependency
154
- name: aws-sdk-s3
134
+ name: faraday-retry
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 2.2.0
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 2.2.0
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: 2.2.0
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 2.2.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: typhoeus
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.123.0
159
+ version: 1.4.0
160
160
  - - ">="
161
161
  - !ruby/object:Gem::Version
162
- version: 1.123.0
162
+ version: 1.4.1
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - "~>"
168
168
  - !ruby/object:Gem::Version
169
- version: 1.123.0
169
+ version: 1.4.0
170
170
  - - ">="
171
171
  - !ruby/object:Gem::Version
172
- version: 1.123.0
172
+ version: 1.4.1
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: bundler
175
175
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +245,7 @@ files:
245
245
  - lib/pindo/client/giteeclient.rb
246
246
  - lib/pindo/client/httpclient.rb
247
247
  - lib/pindo/client/pgyerclient.rb
248
+ - lib/pindo/client/pgyeruploadclient.rb
248
249
  - lib/pindo/client/tgateclient.rb
249
250
  - lib/pindo/command.rb
250
251
  - lib/pindo/command/appstore.rb