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 +4 -4
- data/README.md +1 -1
- data/app/controllers/mini_program/wechat_controller.rb +1 -1
- data/lib/exceptions/initialize_denied.rb +2 -0
- data/lib/exceptions/unsupported_param_type.rb +2 -0
- data/lib/mini_program/client.rb +35 -20
- data/lib/mini_program/r_logger.rb +34 -0
- data/lib/mini_program/request_result.rb +4 -0
- data/lib/{service_result.rb → mini_program/service_result.rb} +0 -0
- data/lib/mini_program/version.rb +1 -1
- data/lib/mini_program.rb +2 -2
- metadata +7 -4
- data/lib/r_logger.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b1e4460a9570de402edbdd27100de5f8a8b0ff0c8504d0e7d60e8793e2c2812
|
4
|
+
data.tar.gz: ca92b1aa3fb0c4300a9eda802716d9344367c8e10397c230bf089ca402915b02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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]
|
data/lib/mini_program/client.rb
CHANGED
@@ -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.
|
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
|
-
|
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
|
-
|
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
|
-
|
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:
|
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
|
-
|
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
|
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: :
|
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
|
-
|
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
|
-
|
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
|
File without changes
|
data/lib/mini_program/version.rb
CHANGED
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
|
+
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-
|
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
|