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 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