mini_program 1.2.4 → 1.3.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: cfba91664e79dd0e121021812a5bc5bbca9011ba21ea74955b6b15dd54f86562
4
- data.tar.gz: 908efc23be5f5b65f48a4cbad44e1cc70b0c6ff9c6f8bd851d5498d52523fe8a
3
+ metadata.gz: 1b1e4460a9570de402edbdd27100de5f8a8b0ff0c8504d0e7d60e8793e2c2812
4
+ data.tar.gz: ca92b1aa3fb0c4300a9eda802716d9344367c8e10397c230bf089ca402915b02
5
5
  SHA512:
6
- metadata.gz: 9c3c3406c1f4d9ea80e527a981b51a804488baccefec0620672ce53828fe8ca653c2f0db03811fd1605028c280b6afd8d645e542250bee6cfaccf3db6dcaea30
7
- data.tar.gz: b728b6b149c4ae436b8eafe9167e6fdf0d5a8e6e15c7e7888ee3df2d4c459de7cb12d747a75c313ff8a5af111008815abe73b79cc790ba2cf637a66d10bdbcba
6
+ metadata.gz: c8e4983df571af674fa5359d976a735494fcb03bd797a6705a304a042d2eb0928b4857fcfbdaa745059b9e56328886b44a6ae98ade0907eac0ccead6e03540cd
7
+ data.tar.gz: dc368f66b72e0013b52b116dc61e6b3ef3f960e9a5cc52eacfd13bdf5150e6dedaf8de0a04fd945771b6db9715545bb285eb0f0c25afc01b3f0181539b517584
data/README.md CHANGED
@@ -48,7 +48,7 @@ code = "041PuvGa1rysrB0noDJa1n7RBv2PuvGe"
48
48
  encrypted_data = "3G/+Fh6kCBaQszXFTxz3h3HFSbu0UuVW/4aLbz8WGzrKfmbGpvnxYHAa4QrKXJvHpB++3ogOYoU6iiG+1HW18Lkt9qEJE9GyRw5OnuXSjTnUIPSRROT3sxeAYnT1kf4ngTAfrD3f4TFtLXkRIrrc1MzSqx/LV8iXA8Lu5Y+7kZx26eulz3yVrlXDH3BOIX6zcGOeprsK5XzDx2ltmf3j5w=="
49
49
  iv = "5tiyfVEHNVgHN4n8lzDrUA=="
50
50
 
51
- result = mp.get_phone_num(code: code, encrypted_data: encrypted_data, iv: iv)
51
+ result = mp.decrypt_phone_num(code: code, encrypted_data: encrypted_data, iv: iv)
52
52
 
53
53
  if result.success?
54
54
  phone_num = result.data[:phone]
@@ -27,7 +27,7 @@ module MiniProgram
27
27
  # POST /wechat/phone_num
28
28
  def phone_num
29
29
  client = MiniProgram::Client.new
30
- result = client.get_phone_num(code: params[:code], encrypted_data: params[:encrypted_data], iv: params[:iv])
30
+ result = client.decrypt_phone_num(code: params[:code], encrypted_data: params[:encrypted_data], iv: params[:iv])
31
31
 
32
32
  if result.success?
33
33
  cookies.signed[:phone_num] = result.data[:phone_num]
@@ -0,0 +1,2 @@
1
+
2
+ class InitializeDenied < StandardError; end
@@ -0,0 +1,2 @@
1
+
2
+ class UnsupportedParamType < StandardError; end
@@ -62,11 +62,13 @@ module MiniProgram
62
62
  result = JSON.parse(response)
63
63
 
64
64
  if result["errcode"] && result["errcode"].to_s != "0"
65
- logger.error <<~ERROR
65
+ logger.tagged "request access token" do
66
+ logger.error <<~ERROR
66
67
  Get access token failed.
67
68
  api: #{api}
68
69
  error: #{result}
69
- ERROR
70
+ ERROR
71
+ end
70
72
 
71
73
  MiniProgram::ServiceResult.new(success: false,
72
74
  error: result,
@@ -97,6 +99,7 @@ module MiniProgram
97
99
  result = JSON.parse(response)
98
100
 
99
101
  if result["errcode"] && result["errcode"].to_s != "0"
102
+ logger.tagged "login mini program"
100
103
  logger.error <<~ERROR
101
104
  Get session key failed.
102
105
  api: #{api}
@@ -135,15 +138,23 @@ module MiniProgram
135
138
  result = post(api, payload)
136
139
 
137
140
  if result["errcode"].to_s != "0"
138
- msg_logger.error { "{params: #{payload}, response: #{result}}" }
141
+ logger.tagged "Subscribe Message" do
142
+ logger.error { "{params: #{payload}, response: #{result}}" }
143
+ end
144
+
139
145
  MiniProgram::ServiceResult.new(success: false,
140
146
  error: result,
141
147
  message: "发送订阅消息失败",
142
148
  message_kind: :send_subscribed_message_failed)
143
149
  else
144
- msg_logger.info { "{params: #{payload}, response: #{result}}" }
150
+ logger.tagged "Subscribe Message" do
151
+ logger.info { "{params: #{payload}, response: #{result}}" }
152
+ end
153
+
145
154
  MiniProgram::ServiceResult.new(success: true,
146
- data: result,
155
+ data: {
156
+ msgid: result.data["msgid"]
157
+ },
147
158
  message: "发送订阅消息成功",
148
159
  message_kind: :send_subscribed_message_success)
149
160
  end
@@ -171,7 +182,10 @@ module MiniProgram
171
182
  })
172
183
 
173
184
  if result["errcode"].to_s != "0"
174
- msg_logger.error { "{params: #{payload}, response: #{result}}" }
185
+ logger.tagged "uniform message" do
186
+ logger.error { "{params: #{payload}, response: #{result}}" }
187
+ end
188
+
175
189
  MiniProgram::ServiceResult.new(success: false,
176
190
  error: result["errmsg"],
177
191
  message: "发送统一服务消息失败",
@@ -187,7 +201,7 @@ module MiniProgram
187
201
  end
188
202
 
189
203
  # 获取用户手机号
190
- def get_phone_num(code:, encrypted_data:, iv:)
204
+ def decrypt_phone_num(code:, encrypted_data:, iv:)
191
205
  login_result = login(code)
192
206
  return login_result if login_result.failure?
193
207
 
@@ -200,12 +214,19 @@ module MiniProgram
200
214
 
201
215
  MiniProgram::ServiceResult.new(
202
216
  success: true,
203
- message: "获取手机号成功",
204
- message_kind: :get_phone_number_success,
217
+ message: "解密手机号成功",
218
+ message_kind: :decrypt_phone_number_success,
205
219
  data: {
206
220
  openid: openid,
207
221
  phone_num: phone_num
208
222
  })
223
+ rescue OpenSSL::Cipher::CipherError, ArgumentError => e
224
+ MiniProgram::ServiceResult.new(
225
+ success: false,
226
+ message: "解密手机号失败",
227
+ message_kind: :decrypt_phone_data_failed,
228
+ error: e
229
+ )
209
230
  end
210
231
 
211
232
  def config
@@ -224,30 +245,24 @@ module MiniProgram
224
245
 
225
246
  #获取小程序二维码
226
247
  def qrcode_unlimited(scene:, page:, width: 280, check_path: true, env_version: "release")
227
- get_token_result = get_access_token
228
- if get_access_token.failure?
229
- return get_token_result
248
+ get_token_result = get_access_token.on_failure do |result|
249
+ return result
230
250
  end
231
251
 
232
252
  api = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=#{get_token_result["access_token"]}"
233
253
 
234
- params = {
235
- scene:,
236
- page:,
237
- width:,
238
- check_path:,
239
- env_version:
240
- }
254
+ params = { scene:, page:, width:, check_path:, env_version: }
241
255
 
242
256
  result = post(api, params)
243
257
 
244
258
  if result["errcode"]
245
- msg_logger.error { "{params: #{params}, response: #{result}}" }
259
+ logger.error { "{ action: 'generate qrcode', params: #{params}, response: #{result}}" }
246
260
  MiniProgram::ServiceResult.new(success: false,
247
261
  error: result,
248
262
  message: "获取二维码失败",
249
263
  message_kind: :get_unlimited_qrcode_failed)
250
264
  else
265
+ logger.info { "{ action: 'generate qrcode', params: #{params}, response: #{result} }" }
251
266
  MiniProgram::ServiceResult.new(success: true,
252
267
  data: { image: result },
253
268
  message: "获取二维码成功",
@@ -0,0 +1,34 @@
1
+ module MiniProgram
2
+ class RLogger
3
+ def initialize
4
+ raise Exceptions::InitializeDenied.new("please use 'RLogger.make' instead of 'RLogger.new'")
5
+ end
6
+
7
+ class << self
8
+ def make(given_filename)
9
+ filename = log_filename(given_filename)
10
+
11
+ # 如果已经存在日志对象,则返回已有的日志对象
12
+ logger = Logger.new(filename)
13
+ ActiveSupport::TaggedLogging.new(logger)
14
+ end
15
+
16
+ def log_filename(given_filename)
17
+ return STDOUT if ENV["RAILS_LOG_TO_STDOUT"].present?
18
+
19
+ if given_filename.class.in? [String, Symbol]
20
+ unless given_filename.end_with? ".log"
21
+ given_filename = "#{given_filename}.log"
22
+ end
23
+
24
+ Rails.root.join("log/#{given_filename}")
25
+ elsif given_filename.respond_to? :to_path
26
+ given_filename.to_path
27
+ else
28
+ raise Exception::UnsupportedParamType.new("\"log filename parameter must be a String type or a Symbol\"")
29
+ end
30
+ end
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,4 @@
1
+
2
+ class MiniProgram::RequestResult
3
+
4
+ end
@@ -1,3 +1,3 @@
1
1
  module MiniProgram
2
- VERSION = '1.2.4'
2
+ VERSION = '1.3.2'
3
3
  end
data/lib/mini_program.rb CHANGED
@@ -4,8 +4,8 @@ require "mini_program/client"
4
4
  require "mini_program/msg"
5
5
  require "mini_program/user"
6
6
  require "application_controller_ext"
7
- require "r_logger"
8
- require "service_result"
7
+ require "mini_program/r_logger"
8
+ require "mini_program/service_result"
9
9
  require "mocha"
10
10
 
11
11
  module MiniProgram
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_program
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-14 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -63,6 +63,8 @@ files:
63
63
  - app/views/mini_program/wechat/login.html.erb
64
64
  - config/routes.rb
65
65
  - lib/application_controller_ext.rb
66
+ - lib/exceptions/initialize_denied.rb
67
+ - lib/exceptions/unsupported_param_type.rb
66
68
  - lib/generators/mini_program/install/USAGE
67
69
  - lib/generators/mini_program/install/install_generator.rb
68
70
  - lib/generators/mini_program/install/templates/initializer.rb
@@ -73,10 +75,11 @@ files:
73
75
  - lib/mini_program/client.rb
74
76
  - lib/mini_program/engine.rb
75
77
  - lib/mini_program/msg.rb
78
+ - lib/mini_program/r_logger.rb
79
+ - lib/mini_program/request_result.rb
80
+ - lib/mini_program/service_result.rb
76
81
  - lib/mini_program/user.rb
77
82
  - lib/mini_program/version.rb
78
- - lib/r_logger.rb
79
- - lib/service_result.rb
80
83
  - lib/tasks/mini_program_tasks.rake
81
84
  homepage: https://github.com/bkyz/mini_program
82
85
  licenses:
data/lib/r_logger.rb DELETED
@@ -1,36 +0,0 @@
1
- module MiniProgram
2
- class RLogger
3
- def initialize
4
- raise Exceptions::InitializeDenied.new("please use 'ILogger.make' instead of 'ILogger.new'")
5
- end
6
-
7
- class << self
8
- def make(log_file)
9
- @logger ||= {}
10
-
11
- log_file_name = if log_file.class.in? [String, Symbol]
12
- log_file_name = log_file.to_sym
13
-
14
- unless log_file_name.to_s.end_with? ".log"
15
- log_file_name = "#{log_file_name}.log"
16
- end
17
-
18
- "#{root_path}/#{log_file_name}"
19
- elsif log_file.respond_to? :to_path
20
- log_file.to_path
21
- else
22
- raise Exceptions::UnsupportdParamType.new("log file parameter only support 'File' or 'String' Type.")
23
- end
24
-
25
- # 如果已经存在日志对象,则返回已有的日志对象
26
- @logger[log_file_name] ||= ::Logger.new(log_file_name)
27
- end
28
-
29
- def root_path
30
- @root ||= "#{Rails.root}/log"
31
- end
32
- end
33
-
34
-
35
- end
36
- end