mini_program 1.3.3 → 1.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed845cf55dd393171e8738f4c44e0d2073a58b90937be6f375b462932a8ff212
4
- data.tar.gz: c7eddc9f26d699721525bf239461e8bfd8646bd4bde246cb24399a5674bdeb37
3
+ metadata.gz: 819a9d88d29ed42dffc439ba5686b14c9afad196d9bc8f6068d371ad4d0db22c
4
+ data.tar.gz: 401802387b27e867b19d97382bf4bac8b18db259d873c1470b925177efe76ed3
5
5
  SHA512:
6
- metadata.gz: bc14988b0f3ecd95652264929efce493845b00e4ff2608094ad623cbce53b5004d649c31cd326a5dcf694935420e1d04cfb52ce5b9da21b684d0a887fc60645a
7
- data.tar.gz: afc0ab11bfc0b952c40431499d6b6b79ef473258b1ac92126bd3905cc306cf415e125e8450e12333e86deedc83f605e4cc77b7623472788b5aa6e350961e5a49
6
+ metadata.gz: f27016f2662ce3b21b435b27db456aa746b36044e3dc06a6fca2f8f140e9c6e138080b0df7a5dd8e9d39c44e59e365890e828871d421b3985e678226e6651ef9
7
+ data.tar.gz: 847a8165ed9d30d383e5e97de5792d612d0cab70410d16debf6c945b42c199aa1694650a92129aaf10a2cdb534fc2715de2d5bbb031eb9a6fa0bddeccaca97ac
@@ -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::ServiceResult.new(success: true,
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
- logger.tagged "request access token" do
66
- logger.error <<~ERROR
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::ServiceResult.new(success: false,
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::ServiceResult.new(success: true,
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
- logger.tagged "login mini program"
103
- logger.error <<~ERROR
104
- Get session key failed.
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::ServiceResult.new(success: false,
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::ServiceResult.new(success: true,
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 != "0"
141
- logger.tagged "Subscribe Message" do
142
- logger.error { "{params: #{payload}, response: #{result}}" }
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::ServiceResult.new(success: false,
146
- error: result,
147
- message: "发送订阅消息失败",
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
- logger.tagged "Subscribe Message" do
151
- logger.info { "{params: #{payload}, response: #{result}}" }
137
+ MiniProgram::Logger.error do
138
+ { action: :send_subscribed_message, params: payload, response: result }.to_json
152
139
  end
153
140
 
154
- MiniProgram::ServiceResult.new(success: true,
155
- data: {
156
- msgid: result.data["msgid"]
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 != "0"
185
- logger.tagged "uniform message" do
186
- logger.error { "{params: #{payload}, response: #{result}}" }
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::ServiceResult.new(success: false,
190
- error: result,
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::ServiceResult.new(
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
- MiniProgram::ServiceResult.new(
225
- success: false,
226
- message: "解密手机号失败",
227
- message_kind: :decrypt_phone_data_failed,
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
- logger.error { "{ action: 'generate qrcode', params: #{params}, response: #{result}}" }
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
- logger.info { "{ action: 'generate qrcode', params: #{params}, response: #{result} }" }
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 get_message_type
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: get_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
@@ -1,3 +1,3 @@
1
1
  module MiniProgram
2
- VERSION = '1.3.3'
2
+ VERSION = '1.4.0'
3
3
  end
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.3.3
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-06-24 00:00:00.000000000 Z
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.13
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