mini_program 0.9.0 → 1.0.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: be168c3a7438d2eb89f4beadc547c0ff5390f2d4cc85c36d66c34f354c49c190
4
- data.tar.gz: 2cfc79f6ce983974259d1e85229e9f03e5fc80075572da43d371a4ab61265533
3
+ metadata.gz: f2634f717dcf73780aefbd8a0a77ecbde8bc83e999ba37629456162497627a24
4
+ data.tar.gz: 980030d77aaaff28d2dce0e6755e03ccf6a994d341bae1b154a10fa1ac5e5507
5
5
  SHA512:
6
- metadata.gz: a66491684eb6ffd39a10bb229e98efa45fcb570a0e990b8f19d54088198468c4c5210002ce4b1a14a3f40c6d4188e8eadf3f1842202983cb70209f76269cafb7
7
- data.tar.gz: ffb2187403073cfbc4c54a65ce23498e25f223fbab1718658f1733d757d8a351ed32838ddab662b47b562d2200242e13fef6e540520ea13ef0952cadf2e4f21b
6
+ metadata.gz: 6c770292107dd2f0a48b0b99f185aef1fe92d5e9d6a7ae86c377006dcd89be7b335c4c25e07507bd9c311275d9383ef57a15c0bf76365fe1b6d53c7db2b0b300
7
+ data.tar.gz: aafe64599c60eed573e048ab50035fcb1ec00458cf6d0d9eded8514c8087eaac490be82fb932e17aa2e17b81ab9a66773a98507e69ca83b7f6ca2a18158dae96
data/README.md CHANGED
@@ -32,7 +32,7 @@ mp = MiniProgram::Client.new
32
32
  # code 是在小程序端调用 wx.login 拿到的
33
33
  result = mp.login(code)
34
34
  if result.success?
35
- open_id = result.data[:openid]
35
+ openid = result.data[:openid]
36
36
  session_key = result.data[:session_key]
37
37
  end
38
38
  ```
@@ -71,11 +71,11 @@ end
71
71
  # page: "/pages/index/index"
72
72
  # data:
73
73
  # thing2:
74
- # value: "%{title}"
75
- # phrase4:
76
- # value: "%{state}"
77
- # thing1:
78
- # value: "%{detail}"
74
+ # value: "%{title}"
75
+ # phrase4:
76
+ # value: "%{state}"
77
+ # thing1:
78
+ # value: "%{detail}"
79
79
 
80
80
  msg = MiniProgram::Msg.new(:progress, {
81
81
  title: "测试",
@@ -83,12 +83,12 @@ msg = MiniProgram::Msg.new(:progress, {
83
83
  detail: "测试已完成"
84
84
  })
85
85
 
86
- # send_to 的参数可以是 openid(字符串),或者是带有 open_id 方法的对象,返回 MiniProgram::ServiceResult
86
+ # send_to 的参数可以是 openid(字符串),或者是带有 openid 方法的对象,返回 MiniProgram::ServiceResult
87
87
  result = msg.send_to("ogT7J5YddGnll-ippRvJq62Nv5W0")
88
88
 
89
89
  # or
90
90
  user = User.first
91
- user.open_id # => ogT7J5YddGnll-ippRvJq62Nv5W0
91
+ user.openid # => ogT7J5YddGnll-ippRvJq62Nv5W0
92
92
  result = msg.send_to(user)
93
93
 
94
94
  if result.success?
@@ -1,4 +1,7 @@
1
1
  module MiniProgram
2
- class ApplicationController < ActionController::Base
2
+ class ApplicationController < ApplicationController
3
+ include AbstractController::Helpers
4
+ include ActionController::Cookies
5
+
3
6
  end
4
7
  end
@@ -2,18 +2,22 @@ require_dependency "mini_program/application_controller"
2
2
 
3
3
  module MiniProgram
4
4
  class WechatController < ApplicationController
5
- skip_forgery_protection
5
+ skip_forgery_protection if respond_to? :skip_forgery_protection
6
6
 
7
7
  # POST /wechat/login
8
8
  def login
9
9
  result = MiniProgram::Client.new.login(params["code"])
10
10
 
11
11
  if result.success?
12
- cookies.signed[:open_id] = result.data["openid"]
12
+ cookies.signed[:openid] = result.data["openid"]
13
13
  cookies.signed[:session_key] = result.data["session_key"]
14
+ cookies.signed[:options] = params[:options].permit!
15
+
16
+ after_mp_login if respond_to? :after_mp_login
17
+
14
18
  render json: current_mp_user
15
19
  else
16
- render json: { errors: result.errors }
20
+ render json: { error: result.error }
17
21
  end
18
22
  end
19
23
 
@@ -27,7 +31,7 @@ module MiniProgram
27
31
 
28
32
  render json: result.data
29
33
  else
30
- render json: { errors: result.errors }
34
+ render json: { error: result.error }
31
35
  end
32
36
  end
33
37
  end
@@ -1,10 +1,21 @@
1
1
 
2
2
 
3
- ActionController::Base.class_eval do
3
+ ActionController::Base.class_eval do
4
4
  def current_mp_user
5
5
  MiniProgram::User.new(open_id: cookies.signed[:open_id],
6
6
  nickname: cookies.signed[:nickname],
7
7
  phone_num: cookies.signed[:phone_num],
8
- session_key: cookies.signed[:session_key])
8
+ session_key: cookies.signed[:session_key],
9
+ options: cookies.signed[:options])
10
+ end
11
+ end
12
+
13
+ ActionController::API.class_eval do
14
+ def current_mp_user
15
+ MiniProgram::User.new(open_id: cookies.signed[:open_id],
16
+ nickname: cookies.signed[:nickname],
17
+ phone_num: cookies.signed[:phone_num],
18
+ session_key: cookies.signed[:session_key],
19
+ options: cookies.signed[:options])
9
20
  end
10
21
  end
@@ -58,7 +58,7 @@ module MiniProgram
58
58
  api: #{api}
59
59
  error: #{result}
60
60
  ERROR
61
- return MiniProgram::ServiceResult.new(success: false, errors: result, message: result["errmsg"])
61
+ return MiniProgram::ServiceResult.new(success: false, error: result, message: result["errmsg"])
62
62
  end
63
63
 
64
64
  MiniProgram::ServiceResult.new(success: true, data: result)
@@ -80,13 +80,13 @@ module MiniProgram
80
80
 
81
81
  result = JSON.parse(response)
82
82
 
83
- if result["errcode"].to_s != "0"
83
+ if result["errcode"] && result["errcode"].to_s != "0"
84
84
  logger.error <<~ERROR
85
85
  Get session key failed.
86
86
  api: #{api}
87
87
  result: #{result}
88
88
  ERROR
89
- return MiniProgram::ServiceResult.new(errors: result, message: result["errmsg"])
89
+ return MiniProgram::ServiceResult.new(error: result, message: result["errmsg"])
90
90
  end
91
91
 
92
92
  MiniProgram::ServiceResult.new(success: true, data: result)
@@ -94,11 +94,11 @@ module MiniProgram
94
94
 
95
95
  # 发送订阅消息
96
96
  # @param [MiniProgram::Msg] msg
97
- # @param [String] to 用户的open id
97
+ # @param [String] to 用户的openid
98
98
  def send_msg(msg, to: )
99
- open_id = to.try(:open_id) || to
99
+ openid = to.try(:openid) || to
100
100
 
101
- payload = msg.as_json.merge!(touser: open_id)
101
+ payload = msg.as_json.merge!(touser: openid)
102
102
 
103
103
  # 获取 access_token
104
104
  get_token_result = get_access_token
@@ -111,7 +111,7 @@ module MiniProgram
111
111
 
112
112
  if result["errcode"].to_s != "0"
113
113
  msg_logger.error {"{params: #{payload}, response: #{result}}"}
114
- return MiniProgram::ServiceResult.new(success: false, errors: result["errmsg"])
114
+ return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
115
115
  end
116
116
 
117
117
  msg_logger.info {"{params: #{payload}, response: #{result}}"}
@@ -123,7 +123,7 @@ module MiniProgram
123
123
  # 现在小程序的模板消息功能关闭了,就只剩下发送模板消息到公众号这个功能了
124
124
  #
125
125
  def send_uniform_msg(msg, to: )
126
- open_id = to.try(:open_id) || to
126
+ openid = to.try(:openid) || to
127
127
 
128
128
  payload = msg.as_json
129
129
 
@@ -134,13 +134,13 @@ module MiniProgram
134
134
 
135
135
  api = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=#{get_token_result["access_token"]}"
136
136
  result = post(api, {
137
- touser: open_id,
137
+ touser: openid,
138
138
  mp_template_msg: payload
139
139
  })
140
140
 
141
141
  if result["errcode"].to_s != "0"
142
142
  msg_logger.error {"{params: #{payload}, response: #{result}}"}
143
- return MiniProgram::ServiceResult.new(success: false, errors: result["errmsg"])
143
+ return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
144
144
  end
145
145
 
146
146
  msg_logger.info { "{params: #{payload}, response: #{result}}"}
@@ -152,7 +152,7 @@ module MiniProgram
152
152
  login_result = login(code)
153
153
  return login_result if login_result.failure?
154
154
 
155
- open_id = login_result.data[:openid]
155
+ openid = login_result.data[:openid]
156
156
  session_key = login_result.data[:session_key]
157
157
 
158
158
  data = decrypt_phone_data(encrypted_data, iv, session_key)
@@ -162,7 +162,7 @@ module MiniProgram
162
162
  MiniProgram::ServiceResult.new(
163
163
  success: true,
164
164
  data: {
165
- open_id: open_id,
165
+ openid: openid,
166
166
  phone_num: phone_num
167
167
  })
168
168
  end
@@ -234,4 +234,4 @@ module MiniProgram
234
234
  end
235
235
 
236
236
  end
237
- end
237
+ end
@@ -1,14 +1,16 @@
1
1
 
2
2
  class MiniProgram::User
3
- attr_accessor :open_id, :nickname, :phone_num, :session_key
4
-
3
+ attr_accessor :open_id, :nickname, :phone_num, :session_key, :options
4
+
5
5
  def initialize(open_id: :blank_open_id,
6
6
  nickname: :blank_nickname,
7
7
  phone_num: :blank_phone_num,
8
- session_key: :blank_session_key)
8
+ session_key: :blank_session_key,
9
+ options: nil)
9
10
  @open_id = open_id
10
11
  @nickname = nickname
11
12
  @phone_num = phone_num
12
13
  @session_key = session_key
14
+ @options = options
13
15
  end
14
16
  end
@@ -1,3 +1,3 @@
1
1
  module MiniProgram
2
- VERSION = '0.9.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,7 +1,7 @@
1
1
  module MiniProgram
2
2
  class ServiceResult
3
3
  attr_accessor :success,
4
- :errors,
4
+ :error,
5
5
  :data,
6
6
  :message,
7
7
  :message_type
@@ -9,13 +9,13 @@ module MiniProgram
9
9
  delegate :[], :[]=, to: :data
10
10
 
11
11
  def initialize(success: false,
12
- errors: nil,
12
+ error: nil,
13
13
  message: nil,
14
14
  message_type: nil,
15
15
  data: {})
16
16
  self.success = success
17
17
  self.data = (data.presence || {}).with_indifferent_access
18
- self.errors = errors.is_a?(Array) ? errors : [errors]
18
+ self.error = error
19
19
  self.message = message
20
20
  self.message_type = message_type
21
21
  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: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-09 00:00:00.000000000 Z
11
+ date: 2021-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails