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