mini_program 1.2.4 → 1.3.2

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: 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