jpsclient 2.7.1 → 2.7.2

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: 48dd1ae1aaa5dc5113053a1518852757e21f1093e6cc0f78af67a233fa99816c
4
- data.tar.gz: 45d7e50bdba93716069834434e6fcc312f47ec1cb65f762c33151245507fc90d
3
+ metadata.gz: 3b469c45fc263d9c573736eba519b34ae855058e47b77a01428e5da3330ce052
4
+ data.tar.gz: cc4eb5ab5180c02022dff9df585d848cf51c1fab8914b0e129989b812501133b
5
5
  SHA512:
6
- metadata.gz: 5e52ac2b47c2933708800e6a36059853638d464f5927c64037e7153c9abf39bcad5b7c19d9ee43a9075bf2e5dc88d05e3978cc760e1e402882a0eea2697a7ca6
7
- data.tar.gz: ac94b28dbce9ab2622acbc1ba2a1d11e2306cf842c6afc565149f8a146d0ffa2536cece93a26471ee85afc629fa3e597f3e8e84ce7a62a19b5cbe3acb2f392e9
6
+ metadata.gz: 0bfbf38a960e5b308f72b28e0962eebb0425fec3a15229c77f8a01b17353012fb988db35f47363cdea5ca57151a317c09b07e9ba999019fdff2ee7c940cb8aef
7
+ data.tar.gz: e8952174c4e5921e3cb7dad0e98c0f72f466aac458b50342eefabf82fc4f87727610bb303dc4b6a4d454fd41cc64739455aafc2c2ace2bde5f68733bd9c5e7f9
@@ -236,6 +236,10 @@ end
236
236
  module JPSClient
237
237
  # JPS API 响应封装类 - 简化版
238
238
  class Response
239
+ # 登录 token 失效的业务码。调用方需要按它区分「认证失败」和「网络/服务端故障」,
240
+ # 提成常量避免各处硬编码
241
+ NEED_LOGIN_CODE = '20001'.freeze
242
+
239
243
  attr_reader :code
240
244
  attr_reader :data
241
245
  attr_reader :msg
@@ -269,7 +273,7 @@ module JPSClient
269
273
 
270
274
  # 20001: 登录token失效
271
275
  def need_login?
272
- @need_login || @code.to_s == '20001'
276
+ @need_login || @code.to_s == NEED_LOGIN_CODE
273
277
  end
274
278
 
275
279
  # 20011: 没有权限访问项目
@@ -6,6 +6,7 @@ require 'digest'
6
6
  require 'cgi'
7
7
  require 'uri'
8
8
  require 'jpsclient/base/exception'
9
+ require 'jpsclient/http/http_client'
9
10
  require 'jpsclient/upload/upload_config'
10
11
  require 'jpsclient/upload/upload_progress'
11
12
  require 'jpsclient/utils/logger'
@@ -98,7 +99,7 @@ module JPSClient
98
99
  end
99
100
 
100
101
  if init_result.nil? || !init_result.dig("data", "upload_id")
101
- raise ExceptionError, "初始化上传失败,请检查网络或服务器状态"
102
+ raise ExceptionError, init_multipart_error_message(init_result)
102
103
  end
103
104
 
104
105
  upload_id = init_result["data"]["upload_id"]
@@ -169,6 +170,35 @@ module JPSClient
169
170
 
170
171
  end
171
172
 
173
+ # 拼装初始化上传失败的错误信息
174
+ #
175
+ # 真实原因写在接口返回的 code / msg 里(例如 20001 登录态失效),
176
+ # 一律报「请检查网络或服务器状态」会把认证问题误导成网络问题;
177
+ # 而原始响应此前只在 JPSClient.debug? 下打印,排查时通常拿不到。
178
+ #
179
+ # @param init_result [Hash, nil] init_file_multipart 的原始返回
180
+ # @return [String] 带上真实原因的错误信息
181
+ def init_multipart_error_message(init_result)
182
+ return "初始化上传失败:接口无响应,请检查网络或服务器状态" if init_result.nil?
183
+
184
+ code = init_result["code"]
185
+ msg = init_result["msg"] || init_result["message"]
186
+
187
+ # request_with_auth 遇到 20001 会自动重新登录并重试一次,
188
+ # 这里仍拿到 20001 说明重登也没成功,需要用户手动重新登录
189
+ if code.to_s == Response::NEED_LOGIN_CODE
190
+ detail = msg.to_s.empty? ? "code=#{code}" : "code=#{code},msg=#{msg}"
191
+ return "初始化上传失败:登录态已失效,且自动重新登录未成功(#{detail}),请重新登录后重试"
192
+ end
193
+
194
+ parts = []
195
+ parts << "code=#{code}" unless code.nil?
196
+ parts << "msg=#{msg}" unless msg.to_s.empty?
197
+ parts << "响应中缺少 data.upload_id" if parts.empty?
198
+
199
+ "初始化上传失败(#{parts.join(",")}),请检查网络或服务器状态"
200
+ end
201
+
172
202
  # 安全地检查上传失败状态
173
203
  def upload_failed?
174
204
  @upload_failed_mutex.synchronize { @upload_failed }
@@ -1,3 +1,3 @@
1
1
  module JPSClient
2
- VERSION = '2.7.1'
2
+ VERSION = '2.7.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jpsclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Your Name
@@ -296,7 +296,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
296
  - !ruby/object:Gem::Version
297
297
  version: '0'
298
298
  requirements: []
299
- rubygems_version: 4.0.11
299
+ rubygems_version: 4.0.10
300
300
  specification_version: 4
301
301
  summary: JPS Platform API Client with Full API Support
302
302
  test_files: []