mini_program 0.11.0 → 1.0.2

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: 33eb5ef599719b87fa6f41511075a9a63583aa0a09b7889cf198fff54b23ad9d
4
- data.tar.gz: 5c7384b8a9b7f8b87476e3a4f9664a2011106eadbb02e4727ae3ee5a40074396
3
+ metadata.gz: c4c2f36cd55294e1243e4933d5e7c2dccb8b81e7bf857fcdde911bdde0555a8b
4
+ data.tar.gz: f1be92b59ef4de422756391b3e7545c651b9950ddfd4cab825f20818e0636389
5
5
  SHA512:
6
- metadata.gz: 5926356805f658544866838ac1f5222aeb463fe97d35d8fd2c1bfec31f9238f5089b530c8e8b594e4328c1ff527372aa24d4116878f792ad180e6323dd6cd638
7
- data.tar.gz: 3d6a4b3e3250b1639c53c211854c41616d24959f830816e70a2d097db58d7eef8b0323d9e1cd6bab48ac9819cb3f11886c984d7810cfc712570c1fdac50f37a5
6
+ metadata.gz: 15518ae9daa62e14d63b513432f2e707d012eeea7123d54f62e54913c623adad1301c614455e5ec198940cf4c0cabf3695b6d2d2bd3e4ce0effc125014156f8b
7
+ data.tar.gz: e6511f4151d75cdd0622ebb5cf932ba0aae5cc3bcd621a46792672056f7d53b9ac05aceff84ad6dfd89b54f87de697b3ffdd745dbdfd27122b0379fbbb5c2fde
data/README.md CHANGED
@@ -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: "测试",
@@ -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
@@ -20,7 +20,7 @@ module MiniProgram
20
20
  end
21
21
 
22
22
  def get_access_token(fresh: false)
23
- access_token = redis.get(access_token_store_key)
23
+ access_token = Rails.cache.read(access_token_store_key)
24
24
 
25
25
  if access_token.present? && !fresh
26
26
  return MiniProgram::ServiceResult.new(success: true, data: {access_token: access_token})
@@ -29,7 +29,11 @@ module MiniProgram
29
29
  result = request_access_token
30
30
 
31
31
  if result.success?
32
- redis.setex access_token_store_key, 1.5.hours.to_i, result.data["access_token"]
32
+ # redis.setex access_token_store_key, 1.5.hours.to_i, result.data["access_token"]
33
+ Rails.cache.write(access_token_store_key,
34
+ result.data["access_token"],
35
+ expires_in: 1.5.hours.to_i,
36
+ race_condition_ttl: 10)
33
37
  end
34
38
 
35
39
  yield result if block_given?
@@ -58,7 +62,7 @@ module MiniProgram
58
62
  api: #{api}
59
63
  error: #{result}
60
64
  ERROR
61
- return MiniProgram::ServiceResult.new(success: false, errors: result, message: result["errmsg"])
65
+ return MiniProgram::ServiceResult.new(success: false, error: result, message: result["errmsg"])
62
66
  end
63
67
 
64
68
  MiniProgram::ServiceResult.new(success: true, data: result)
@@ -80,13 +84,13 @@ module MiniProgram
80
84
 
81
85
  result = JSON.parse(response)
82
86
 
83
- if result["errcode"].to_s != "0"
87
+ if result["errcode"] && result["errcode"].to_s != "0"
84
88
  logger.error <<~ERROR
85
89
  Get session key failed.
86
90
  api: #{api}
87
91
  result: #{result}
88
92
  ERROR
89
- return MiniProgram::ServiceResult.new(errors: result, message: result["errmsg"])
93
+ return MiniProgram::ServiceResult.new(error: result, message: result["errmsg"])
90
94
  end
91
95
 
92
96
  MiniProgram::ServiceResult.new(success: true, data: result)
@@ -111,7 +115,7 @@ module MiniProgram
111
115
 
112
116
  if result["errcode"].to_s != "0"
113
117
  msg_logger.error {"{params: #{payload}, response: #{result}}"}
114
- return MiniProgram::ServiceResult.new(success: false, errors: result["errmsg"])
118
+ return MiniProgram::ServiceResult.new(success: false, error: result)
115
119
  end
116
120
 
117
121
  msg_logger.info {"{params: #{payload}, response: #{result}}"}
@@ -140,7 +144,7 @@ module MiniProgram
140
144
 
141
145
  if result["errcode"].to_s != "0"
142
146
  msg_logger.error {"{params: #{payload}, response: #{result}}"}
143
- return MiniProgram::ServiceResult.new(success: false, errors: result["errmsg"])
147
+ return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
144
148
  end
145
149
 
146
150
  msg_logger.info { "{params: #{payload}, response: #{result}}"}
@@ -221,10 +225,6 @@ module MiniProgram
221
225
  @logger ||= MiniProgram::RLogger.make("mini_program")
222
226
  end
223
227
 
224
- def redis
225
- @redis ||= Redis.current
226
- end
227
-
228
228
  def access_token_store_key
229
229
  @access_token_store_key ||= "mp-#{appid}-access-token"
230
230
  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.11.0'
2
+ VERSION = '1.0.2'
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.11.0
4
+ version: 1.0.2
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-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.1.4
27
- - !ruby/object:Gem::Dependency
28
- name: redis
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: mocha
43
29
  requirement: !ruby/object:Gem::Requirement