mini_program 1.2.4 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 +3 -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: 299067c25a9cc3d5d9070719da62f4239dafa89990540db1c81d5686475d9dbe
|
4
|
+
data.tar.gz: 857dfd0f801159319c7663d12d2d4472149c7f3e34f0a32002dcc6b88cdd0fad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ff9c4555528100bee8afdcb11c0c8de0b8c1df110ee1f2cbf149ff78caba1cc035189b0f21a4a0dc18f1b395820bde5e2f63c4d68a1a4fdc3bb5ba8e865f79c
|
7
|
+
data.tar.gz: 6cd0e717e952fd257dd873d0511501c8098f8741a935254ed0b9c190370f0b46d7d6d676a82c56d9a785cf89e2be18b667c56f4bcae2db0bdb3e987b22461e61
|
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 => 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,9 @@ 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 "
|
7
|
+
require "mini_program/r_logger"
|
8
|
+
require "mini_program/log_formatter"
|
9
|
+
require "mini_program/service_result"
|
9
10
|
require "mocha"
|
10
11
|
|
11
12
|
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.
|
4
|
+
version: 1.3.0
|
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
|