mini_program 1.4.3 → 1.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mini_program/client.rb +65 -63
- data/lib/mini_program/r_logger.rb +34 -0
- data/lib/mini_program/service_result.rb +12 -20
- data/lib/mini_program/version.rb +1 -1
- data/lib/mini_program.rb +1 -3
- metadata +5 -7
- data/lib/mini_program/failure_result.rb +0 -11
- data/lib/mini_program/logger.rb +0 -18
- data/lib/mini_program/success_result.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 989d3f042ef00e840a26f6e051a1fdbf37c0a95b360debc1b7fe6684da39915b
|
4
|
+
data.tar.gz: 673745489d798f92a3f47be040f8b1c14c9a899755066e3243db0b314dd49be2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d70b971ecfc8428055cb22e2741ec7eb8f9358d55d6a5e23c8e04b219fec194009a04d6b95dc346261346937789d20a914da692634fb5dbb3bfc00d09a45864
|
7
|
+
data.tar.gz: 4bc9e581830bd4554f980fcc29823c6273b060759d59dfe71a5d1bf0388946bd0f8c5a789ecf7fc59a3badde57b82025a70b3c7d6338faaaaaa40720113cd24b
|
data/lib/mini_program/client.rb
CHANGED
@@ -23,7 +23,8 @@ module MiniProgram
|
|
23
23
|
access_token = Rails.cache.read(access_token_store_key)
|
24
24
|
|
25
25
|
if access_token.present? && !fresh
|
26
|
-
return MiniProgram::
|
26
|
+
return MiniProgram::ServiceResult.new(success: true,
|
27
|
+
data: { access_token: access_token },
|
27
28
|
message: "获取 access token 成功",
|
28
29
|
message_kind: :get_access_token_success)
|
29
30
|
end
|
@@ -61,15 +62,21 @@ module MiniProgram
|
|
61
62
|
result = JSON.parse(response)
|
62
63
|
|
63
64
|
if result["errcode"] && result["errcode"].to_s != "0"
|
64
|
-
|
65
|
-
|
65
|
+
logger.tagged "request access token" do
|
66
|
+
logger.error <<~ERROR
|
67
|
+
Get access token failed.
|
68
|
+
api: #{api}
|
69
|
+
error: #{result}
|
70
|
+
ERROR
|
66
71
|
end
|
67
72
|
|
68
|
-
MiniProgram::
|
73
|
+
MiniProgram::ServiceResult.new(success: false,
|
74
|
+
error: result,
|
69
75
|
message: result["errmsg"],
|
70
76
|
message_kind: :request_access_token_failed)
|
71
77
|
else
|
72
|
-
MiniProgram::
|
78
|
+
MiniProgram::ServiceResult.new(success: true,
|
79
|
+
data: { access_token: result["access_token"] },
|
73
80
|
message: "请求 access token 成功",
|
74
81
|
message_kind: :request_access_token_success)
|
75
82
|
end
|
@@ -92,20 +99,25 @@ module MiniProgram
|
|
92
99
|
result = JSON.parse(response)
|
93
100
|
|
94
101
|
if result["errcode"] && result["errcode"].to_s != "0"
|
95
|
-
|
96
|
-
|
97
|
-
|
102
|
+
logger.tagged "login mini program"
|
103
|
+
logger.error <<~ERROR
|
104
|
+
Get session key failed.
|
105
|
+
api: #{api}
|
106
|
+
result: #{result}
|
107
|
+
ERROR
|
98
108
|
|
99
|
-
MiniProgram::
|
109
|
+
MiniProgram::ServiceResult.new(success: false,
|
110
|
+
error: result,
|
100
111
|
message: result["errmsg"],
|
101
112
|
message_kind: :login_failed)
|
102
113
|
|
103
114
|
else
|
104
|
-
MiniProgram::
|
115
|
+
MiniProgram::ServiceResult.new(success: true,
|
116
|
+
data: result,
|
105
117
|
message: "小程序登录成功",
|
106
118
|
message_kind: :login_success)
|
107
|
-
|
108
119
|
end
|
120
|
+
|
109
121
|
end
|
110
122
|
|
111
123
|
# 发送订阅消息
|
@@ -125,22 +137,26 @@ module MiniProgram
|
|
125
137
|
api = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=#{get_token_result["access_token"]}"
|
126
138
|
result = post(api, payload)
|
127
139
|
|
128
|
-
if result["errcode"].to_s
|
129
|
-
|
130
|
-
{
|
140
|
+
if result["errcode"].to_s != "0"
|
141
|
+
logger.tagged "Subscribe Message" do
|
142
|
+
logger.error { "{params: #{payload}, response: #{result}}" }
|
131
143
|
end
|
132
144
|
|
133
|
-
MiniProgram::
|
134
|
-
|
135
|
-
|
145
|
+
MiniProgram::ServiceResult.new(success: false,
|
146
|
+
error: result,
|
147
|
+
message: "发送订阅消息失败",
|
148
|
+
message_kind: :send_subscribed_message_failed)
|
136
149
|
else
|
137
|
-
|
138
|
-
{
|
150
|
+
logger.tagged "Subscribe Message" do
|
151
|
+
logger.info { "{params: #{payload}, response: #{result}}" }
|
139
152
|
end
|
140
153
|
|
141
|
-
MiniProgram::
|
142
|
-
|
143
|
-
|
154
|
+
MiniProgram::ServiceResult.new(success: true,
|
155
|
+
data: {
|
156
|
+
msgid: result.data["msgid"]
|
157
|
+
},
|
158
|
+
message: "发送订阅消息成功",
|
159
|
+
message_kind: :send_subscribed_message_success)
|
144
160
|
end
|
145
161
|
|
146
162
|
end
|
@@ -165,28 +181,18 @@ module MiniProgram
|
|
165
181
|
mp_template_msg: payload
|
166
182
|
})
|
167
183
|
|
168
|
-
if result["errcode"].to_s
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
{ action: :send_uniform_message, message: message, params: payload, response: result }.to_json
|
173
|
-
end
|
174
|
-
|
175
|
-
MiniProgram::SuccessResult.new(data: result,
|
176
|
-
message: message,
|
177
|
-
message_kind: :send_uniform_message_success)
|
178
|
-
|
179
|
-
else
|
180
|
-
message = "发送统一服务消息失败"
|
181
|
-
|
182
|
-
MiniProgram::Logger.error do
|
183
|
-
{ action: :send_uniform_message, message: message, params: payload, response: result }.to_json
|
184
|
-
end
|
185
|
-
|
186
|
-
MiniProgram::FailureResult.new(error: result["errmsg"],
|
187
|
-
message: message,
|
184
|
+
if result["errcode"].to_s != "0"
|
185
|
+
MiniProgram::ServiceResult.new(success: false,
|
186
|
+
error: result,
|
187
|
+
message: "发送统一服务消息失败",
|
188
188
|
message_kind: :send_uniform_message_failed)
|
189
|
+
else
|
190
|
+
MiniProgram::ServiceResult.new(success: true,
|
191
|
+
data: result,
|
192
|
+
message: "发送统一服务消息成功",
|
193
|
+
message_kind: :send_uniform_message_success)
|
189
194
|
end
|
195
|
+
|
190
196
|
end
|
191
197
|
|
192
198
|
# 获取用户手机号
|
@@ -201,24 +207,19 @@ module MiniProgram
|
|
201
207
|
|
202
208
|
phone_num = JSON.parse(data)["phoneNumber"]
|
203
209
|
|
204
|
-
MiniProgram::
|
210
|
+
MiniProgram::ServiceResult.new(
|
211
|
+
success: true,
|
205
212
|
message: "解密手机号成功",
|
206
213
|
message_kind: :decrypt_phone_number_success,
|
207
214
|
data: {
|
208
215
|
openid: openid,
|
209
216
|
phone_num: phone_num
|
210
|
-
}
|
211
|
-
)
|
217
|
+
})
|
212
218
|
rescue OpenSSL::Cipher::CipherError, ArgumentError => e
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
end
|
218
|
-
|
219
|
-
MiniProgram::FailureResult.new(
|
220
|
-
message: message,
|
221
|
-
message_kind: :decrypt_phone_number_failed,
|
219
|
+
MiniProgram::ServiceResult.new(
|
220
|
+
success: false,
|
221
|
+
message: "解密手机号失败",
|
222
|
+
message_kind: :decrypt_phone_data_failed,
|
222
223
|
error: e
|
223
224
|
)
|
224
225
|
end
|
@@ -244,25 +245,18 @@ module MiniProgram
|
|
244
245
|
end
|
245
246
|
|
246
247
|
api = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=#{get_token_result["access_token"]}"
|
247
|
-
|
248
248
|
params = { scene:, page:, width:, check_path:, env_version: }
|
249
249
|
|
250
250
|
result = post(api, params)
|
251
251
|
|
252
252
|
if result["errcode"]
|
253
|
-
|
254
|
-
{ action: 'generate_code', params: params, response: result }.to_json
|
255
|
-
end
|
256
|
-
|
253
|
+
logger.error { "{ action: 'generate qrcode', params: #{params}, response: #{result}}" }
|
257
254
|
MiniProgram::ServiceResult.new(success: false,
|
258
255
|
error: result,
|
259
256
|
message: "获取二维码失败",
|
260
257
|
message_kind: :get_unlimited_qrcode_failed)
|
261
258
|
else
|
262
|
-
|
263
|
-
{ action: 'generate_code', params: params, response: result }.to_json
|
264
|
-
end
|
265
|
-
|
259
|
+
logger.info { "{ action: 'generate qrcode', params: #{params}, response: #{result} }" }
|
266
260
|
MiniProgram::ServiceResult.new(success: true,
|
267
261
|
data: { image: result },
|
268
262
|
message: "获取二维码成功",
|
@@ -310,9 +304,17 @@ module MiniProgram
|
|
310
304
|
aes.update(Base64::decode64(encrypted_data)) + aes.final
|
311
305
|
end
|
312
306
|
|
307
|
+
def logger
|
308
|
+
@logger ||= MiniProgram::RLogger.make("mini_program")
|
309
|
+
end
|
310
|
+
|
313
311
|
def access_token_store_key
|
314
312
|
@access_token_store_key ||= "mp-#{appid}-access-token"
|
315
313
|
end
|
316
314
|
|
315
|
+
def msg_logger
|
316
|
+
@msg_logger ||= MiniProgram::RLogger.make("wx_msg")
|
317
|
+
end
|
318
|
+
|
317
319
|
end
|
318
320
|
end
|
@@ -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
|
@@ -10,11 +10,11 @@ module MiniProgram
|
|
10
10
|
delegate :[], :[]=, to: :data
|
11
11
|
|
12
12
|
def initialize(success: false,
|
13
|
-
data: {},
|
14
13
|
error: nil,
|
15
14
|
message: nil,
|
16
15
|
message_type: nil,
|
17
|
-
message_kind: nil
|
16
|
+
message_kind: nil,
|
17
|
+
data: {})
|
18
18
|
|
19
19
|
self.success = success
|
20
20
|
self.data = (data.presence || {}).with_indifferent_access
|
@@ -40,32 +40,24 @@ module MiniProgram
|
|
40
40
|
self
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
44
|
-
if
|
45
|
-
|
43
|
+
def get_message_type
|
44
|
+
if message_type.present?
|
45
|
+
message_type.to_sym
|
46
46
|
elsif success?
|
47
|
-
:
|
47
|
+
:notice
|
48
48
|
else
|
49
49
|
:error
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
def message_kind_prefix
|
54
|
-
"mini_program_"
|
55
|
-
end
|
56
|
-
|
57
|
-
def message_kind
|
58
|
-
"#{message_kind_prefix}#{@message_kind}"
|
59
|
-
end
|
60
|
-
|
61
53
|
def as_json(options = nil)
|
62
54
|
{
|
63
|
-
success:
|
64
|
-
data:
|
65
|
-
message
|
66
|
-
message_type:
|
67
|
-
message_kind
|
68
|
-
error
|
55
|
+
success: ,
|
56
|
+
data: ,
|
57
|
+
message:,
|
58
|
+
message_type: get_message_type,
|
59
|
+
message_kind:,
|
60
|
+
error:,
|
69
61
|
}
|
70
62
|
end
|
71
63
|
end
|
data/lib/mini_program/version.rb
CHANGED
data/lib/mini_program.rb
CHANGED
@@ -4,10 +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 "mini_program/r_logger"
|
7
8
|
require "mini_program/service_result"
|
8
|
-
require "mini_program/success_result"
|
9
|
-
require "mini_program/failure_result"
|
10
|
-
require "mini_program/logger"
|
11
9
|
require "mocha"
|
12
10
|
|
13
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.4.
|
4
|
+
version: 1.4.4
|
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-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -74,12 +74,10 @@ files:
|
|
74
74
|
- lib/mini_program.rb
|
75
75
|
- lib/mini_program/client.rb
|
76
76
|
- lib/mini_program/engine.rb
|
77
|
-
- lib/mini_program/failure_result.rb
|
78
|
-
- lib/mini_program/logger.rb
|
79
77
|
- lib/mini_program/msg.rb
|
78
|
+
- lib/mini_program/r_logger.rb
|
80
79
|
- lib/mini_program/request_result.rb
|
81
80
|
- lib/mini_program/service_result.rb
|
82
|
-
- lib/mini_program/success_result.rb
|
83
81
|
- lib/mini_program/user.rb
|
84
82
|
- lib/mini_program/version.rb
|
85
83
|
- lib/tasks/mini_program_tasks.rake
|
@@ -98,14 +96,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
96
|
requirements:
|
99
97
|
- - ">="
|
100
98
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
99
|
+
version: 3.0.0
|
102
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
101
|
requirements:
|
104
102
|
- - ">="
|
105
103
|
- !ruby/object:Gem::Version
|
106
104
|
version: '0'
|
107
105
|
requirements: []
|
108
|
-
rubygems_version: 3.3.
|
106
|
+
rubygems_version: 3.3.13
|
109
107
|
signing_key:
|
110
108
|
specification_version: 4
|
111
109
|
summary: a engine for develop mini program
|
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
class MiniProgram::FailureResult < MiniProgram::ServiceResult
|
3
|
-
def initialize(data: {}, error: nil, message: nil, message_type: nil, message_kind: nil)
|
4
|
-
super(success: false,
|
5
|
-
data: data,
|
6
|
-
error: error,
|
7
|
-
message: message,
|
8
|
-
message_type: message_type,
|
9
|
-
message_kind: message_kind)
|
10
|
-
end
|
11
|
-
end
|
data/lib/mini_program/logger.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
class MiniProgram::Logger
|
2
|
-
|
3
|
-
def self.tags
|
4
|
-
["MiniProgram"]
|
5
|
-
end
|
6
|
-
|
7
|
-
%w{ info warn error fatal }.each do |level|
|
8
|
-
define_singleton_method level do |content = "", &block|
|
9
|
-
Rails.logger.tagged *tags do
|
10
|
-
if block.present?
|
11
|
-
Rails.logger.send(level, &block)
|
12
|
-
else
|
13
|
-
Rails.logger.send(level, content)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
class MiniProgram::SuccessResult < MiniProgram::ServiceResult
|
3
|
-
def initialize(data: {}, error: nil, message: nil, message_type: nil, message_kind: nil)
|
4
|
-
super(success: true,
|
5
|
-
data: data,
|
6
|
-
error: error,
|
7
|
-
message: message,
|
8
|
-
message_type: message_type,
|
9
|
-
message_kind: message_kind)
|
10
|
-
end
|
11
|
-
end
|